PHP Webページ内でシェルスクリプトを実行して、システム(Ubuntu 12.04)で実行されているいくつかのプロセスを確認します。 Googleing Shell_exec()
について知りましたが、phpをロードするときにスクリプトを実行できません。
これは私が使用するphpコードです。
$output = Shell_exec('./dirlist.bash');
echo "<pre>$output</pre>";
そして私が得るhtmlの一部
<pre></pre>
$output = Shell_exec('Sudo -u www-data ./dirlist.bash');
も試しました
dirlist.bashはls -l(スクリプトとShell_execのテスト用)
許可の問題ではないと思います。ディレクトリを実行すると、すべてのユーザーに書き込み特権と実行特権が付与されます(ここでは注意が必要です)。
drwxrwxrwx 4 meteo meteo 4096 mar 11 15:20 RAMS
ユーザーwww-dataは、必要に応じてsudoersファイルに追加されました
www-data ALL = (meteo) NOPASSWD: /home/meteo/www/RAMS/dirlist.bash
前もって感謝します
おそらく、スクリプトを呼び出す前に正しいディレクトリにchdirする必要があります。これにより、シェルコマンドを呼び出す前に、スクリプトがどのディレクトリにあるかを確認できます。
$old_path = getcwd();
chdir('/my/path/');
$output = Shell_exec('./script.sh var1 var2');
chdir($old_path);
echo "<pre>$output</pre>";
からのコード: