#この記事の動作環境: Windows10 システム、php 7、thinkpad t480 コンピューター。 最近仕事をしているときに、「ls」や exec() などの一般的なコマンドを実行すると正常に動作することを偶然発見しました。たとえば、php の system() が出力を返さない問題の解決策: コマンドに [2 >& 1] を追加して、標準エラーを標準出力にリダイレクトします (例: [exec('some_command - - オプション 2>& 1'、$output、$ret);]。
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 の system() が出力を返さない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。