でシェルスクリプトを実行しようとしてexec
もshell_exe
何も起こりません! それらのコマンドls
またはwhoami
すべての作業で実行すると。
どうなり得るか?
出力をエコーしますか?
echo exec('ls');
セーフモードを有効にしていますか?
phpinfo();
はいの場合:(マニュアルから)
注:セーフモードが有効になっている場合、safe_mode_exec_dir内のファイルのみを実行できます。実用上の理由から、現在、実行可能ファイルへのパスに..コンポーネントを含めることは許可されていません。
execを呼び出してみてください
exec('...pathtoyourbashscript...', $out, $return);
それで
echo $return;
表示されている場合は127
、パスが間違っている可能性があります。
また、権限を確認してください。ユーザー「nobody」はおそらくapacheユーザーであり、スクリプトにアクセスして実行するための権限が必要です。
を実行して権限を変更できます
chmod 755 pathtouyourscript
これは、「他の人がこのファイルを読んだり実行したりしてもかまいませんが、自分だけが変更できるはずです」のような意味です。
リフレクションを使用して、機能が無効になっているかどうかを確認できますdisable_functions
。
$exec = new ReflectionFunction('exec');
print $exec->isDisabled() ? 'Disabled' : 'Enabled';