0

shell_exec(); を介してコマンドを実行しようとしています。しかし、それは何もしません。shell_exec(); は知っています。これらは完全に機能するため、有効になっています。

echo shell_exec('which php');
echo shell_exec('ls');

それらは正しく出力されます。

問題は、次のようなものを実行したいときです。

shell_exec("php file.php var1 var2 > /dev/null &");

何もしませんが、コンピューターのターミナルから実行すると動作します。私はまた、次のようなフルパスでそれをやろうとしました:

shell_exec("/usr/bin/php /full/path/file.php var1 var2 > /dev/null &");

動作しませんが、やはり... ターミナルのコンピューターから実行すると動作します。

php.ini セーフ モードがオフになっていて、無効になっている機能がないため、何が起こっているのかわかりません。はい、SSH にアクセスでき、専用 IP を取得しました。

4

2 に答える 2

0

特に出力をにリダイレクトしようとしているため、許可拒否エラーが発生する可能性があります/dev/null。cronジョブを検討したいと思うかもしれませんが、出力をリダイレクトしてバックグラウンドで実行している理由がわかりません。

于 2012-07-24T19:54:16.287 に答える
0

関数の戻りコード$return_var(関数の最後の引数system exec)を見てみてください。0成功すればそうなるはずです。サーバーでコマンドラインが許可されていない可能性がある場合127、またはPHPスクリプトからコマンドを実行するための十分な権限がない場合(スクリプトの実行元のユーザー/グループによって異なります)。それ以外の場合、関数は、良いことも悪いことも何も起こらなかったように、出力の空の配列を返すだけです。

私はそれほど前に同じような状況に遭遇し、常に失敗しているls間、OKで働いていました。wget

于 2012-07-24T19:46:29.597 に答える