web-dev-qa-db-ja.com

PHPからbashスクリプトを実行する

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.bashls -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

前もって感謝します

4
pacomet

おそらく、スクリプトを呼び出す前に正しいディレクトリにchdirする必要があります。これにより、シェルコマンドを呼び出す前に、スクリプトがどのディレクトリにあるかを確認できます。

$old_path = getcwd();
chdir('/my/path/');
$output = Shell_exec('./script.sh var1 var2');
chdir($old_path);
echo "<pre>$output</pre>";

からのコード:

9
kamil