ホームページ >バックエンド開発 >PHPチュートリアル >PHP の「exec()」から標準エラー出力をキャプチャするにはどうすればよいですか?
PHP の Exec() 後の標準エラー ストリームの取得
問題:
あなた' PHP の exec() 関数を使用してコマンドを再実行し、書き込まれた潜在的なエラー メッセージをキャプチャしたい
解決策:
PHP は、proc_open を使用して標準出力とエラー ストリームの両方を制御およびキャプチャするためのより包括的なアプローチを提供します。
使用方法:
$descriptorspec = [ 0 => ["pipe", "r"], // stdin 1 => ["pipe", "w"], // stdout 2 => ["pipe", "w"], // stderr ];
$process = proc_open($command, $descriptorspec, $pipes, dirname(__FILE__), null);
$stderr = stream_get_contents($pipes[2]);
例:
次のスクリプト test.sh について考えます。
#!/bin/bash echo 'this is on stdout'; echo 'this is on stdout too'; echo 'this is on stderr' >&2; echo 'this is on stderr too' >&2;
PHP スクリプトでは、 test.sh を実行して stdout をキャプチャできます。標準エラー出力:
$descriptorspec = [0 => ["pipe", "r"], 1 => ["pipe", "w"], 2 => ["pipe", "w"]]; $process = proc_open('./test.sh', $descriptorspec, $pipes); $stdout = stream_get_contents($pipes[1]); $stderr = stream_get_contents($pipes[2]); echo "stdout: $stdout"; echo "stderr: $stderr";
出力:
stdout: this is on stdout this is on stdout too stderr: this is on stderr this is on stderr too
以上がPHP の「exec()」から標準エラー出力をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。