0

次のコードがあります。

$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>";

たとえば、機能しません。なんで?

4

2 に答える 2

1

これは間違いなくパーミッションの問題です。スクリプトから ./ コマンドで実行しようとしているファイルに +x perms があることを確認してください。ファイルに実行可能権限を与えることに関する前のスレッドは次のとおりです: Linux での実行可能ファイルの作成

ファイルに既に +x 権限がある場合は、コマンドを実行するスクリプトの権限の問題である可能性があります。いずれにせよ、ls は実行できるが ./ と top は実行できない場合は、パーミッションが必要です。

編集:私が提供したリンクには、Perl および bash スクリプトに関する多くの情報があることがわかりました。重要な部分は、ファイルを実行可能にするコマンドが

chmod +x ProgramName
于 2013-06-01T04:14:55.113 に答える
0

$var1 と $var2 の内容によっては、それをescapeshellarg呼び出す必要がある場合があります。

 $output = shell_exec("./Program ".escapeshellarg($var1)." ".escapeshellarg($var2));

それがうまくいかなくても、それは良い考えかもしれません。また、パスが正しいことを確認してください。多分file_exits('./Program');小切手で

于 2013-06-01T04:54:12.800 に答える