次のコードがあります。
$output = shell_exec("./Program $var1 $var2");
echo "<pre>$output</pre>";
うまくいきませんが
$output = shell_exec("ls");
echo "<pre>$output</pre>";
動作します。
$output = shell_exec("top");
echo "<pre>$output</pre>";
たとえば、機能しません。なんで?
これは間違いなくパーミッションの問題です。スクリプトから ./ コマンドで実行しようとしているファイルに +x perms があることを確認してください。ファイルに実行可能権限を与えることに関する前のスレッドは次のとおりです: Linux での実行可能ファイルの作成。
ファイルに既に +x 権限がある場合は、コマンドを実行するスクリプトの権限の問題である可能性があります。いずれにせよ、ls は実行できるが ./ と top は実行できない場合は、パーミッションが必要です。
編集:私が提供したリンクには、Perl および bash スクリプトに関する多くの情報があることがわかりました。重要な部分は、ファイルを実行可能にするコマンドが
chmod +x ProgramName
$var1 と $var2 の内容によっては、それをescapeshellarg
呼び出す必要がある場合があります。
$output = shell_exec("./Program ".escapeshellarg($var1)." ".escapeshellarg($var2));
それがうまくいかなくても、それは良い考えかもしれません。また、パスが正しいことを確認してください。多分file_exits('./Program');
小切手で