いくつかの引数を指定して remove サーバーのシェルから php プロセスを開始する必要があるため、ユーザーが GET リクエストを実行したときに何らかの関数を実行する REST API を作成するのは良い考えだと思いました。
テスト用に簡単な bash スクリプトを作成しましたが、このスクリプトを Web サイトから呼び出すときに、コマンドライン引数が指定されていないことがわかりました。
shell_exec('/var/www/test.sh 123')
Bash スクリプト ソース:
#!/bin/sh
echo $1;
root (または他の既存のユーザー) からこの bash スクリプトを呼び出すと、受け取った引数が正しく表示されます。このスクリプトを Web サイト (ユーザー www-data で apache2 の下で実行されている) から呼び出すと、何も返されません。
また、コンソールで www-data ユーザーの下でこの bash スクリプトを実行しても、何も返されません。
su -c '/var/www/test.sh 123' www-data
また、php とは別のユーザーからプロセスを開始しようとしました (これはセキュリティ上の理由から機能しないと想定されていますが、念のため):
$result = system("su -c '/var/www/test.sh 123' sexyuser", $data);
// var_dump($result): string(0) ""
// var_dump($data): int(1)
では、php の下でプロセスを実行するには、www-data ユーザーにどのような権限を与える必要がありますか?