ホームページ >バックエンド開発 >PHPの問題 >php の system() が出力を返さない場合はどうすればよいですか?

php の system() が出力を返さない場合はどうすればよいですか?

王林
王林オリジナル
2021-09-27 14:41:232490ブラウズ

php の system() が出力を返さない問題の解決策: コマンドに [2 >& 1] を追加して、標準エラーを標準出力にリダイレクトします (例: [exec('some_command - - オプション 2>& 1'、$output、$ret);]。

php の system() が出力を返さない場合はどうすればよいですか?

#この記事の動作環境: Windows10 システム、php 7、thinkpad t480 コンピューター。

最近仕事をしているときに、「ls」や exec() などの一般的なコマンドを実行すると正常に動作することを偶然発見しました。たとえば、

 exec('ls',$输出,$ retval); 
 var_dump($ output,$ retval); 
 // $ output包含文件名数组,retval === 0

しかし、別のプログラムを実行しようとすると、次のように出力を取得できません:

exec('some_command --a_parameter',$ output ,$ retval); 
 var_dump($ output,$ retval); 
 // $ output包含一个空数组,结束$ retval === 0

コマンド ラインからコマンドを直接実行すると、いくつかの行が出力されます。コマンドの実行が成功したことがわかり、結果 (一部のファイル) が表示されます。更新、データ追加など) が行われますが、出力は表示されません。

exec() 関数は標準出力のみをキャプチャします。標準エラーが常に Apache エラー ログに送信されるかどうかはわかりませんが、可能であるようです。

UNIX システムを使用する必要がない場合は、コマンドに 2>& 1 を追加することで標準エラーを標準出力にリダイレクトできるため、問題を解決できます。次に例を示します。

 exec('some_command --option 2>& 1',$ output,$ ret);

推奨学習:

phpトレーニング

以上がphp の system() が出力を返さない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。