ホームページ >バックエンド開発 >PHPチュートリアル >PHP の `exec()` から標準エラー (StdErr) をキャプチャするにはどうすればよいですか?

PHP の `exec()` から標準エラー (StdErr) をキャプチャするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-13 02:54:09322ブラウズ

How to Capture Standard Error (StdErr) from `exec()` in PHP?

StdErr による Exec() での PHP エラー処理

PHP では、exec() 関数はコマンドを実行し、次のような結果を返します。実行が成功した場合の URL。ただし、標準エラー (StdErr) ストリームを通じてエラー メッセージにアクセスすることもできます。その方法は次のとおりです。

StdErr を処理する 1 つの方法は、proc_open 関数を使用することです。これにより、コマンドの実行をより詳細に制御できます。次の例を考えてみましょう。

// Initialize I/O descriptors
$descriptorspec = [
   0 => ["pipe", "r"], // stdin
   1 => ["pipe", "w"], // stdout
   2 => ["pipe", "w"]  // stderr
];

// Execute the command using the descriptors
$process = proc_open('./test.sh', $descriptorspec, $pipes, dirname(__FILE__), null);

// Read from stdout and stderr pipes
$stdout = stream_get_contents($pipes[1]);
fclose($pipes[1]);

$stderr = stream_get_contents($pipes[2]);
fclose($pipes[2]);

// Output the content of stdout and stderr
echo "stdout :\n";
var_dump($stdout);

echo "stderr :\n";
var_dump($stderr);

この例では、指定された記述子を使用して ./test.sh が実行され、stdout と stderr の両方からの出力がキャプチャされます。実行すると、スクリプトは stdout と stderr の両方の内容を別々に表示します。

proc_open を使用すると、StdErr を効果的に処理し、PHP スクリプトでのコマンド実行中に生成されたエラー メッセージにアクセスできます。

以上がPHP の `exec()` から標準エラー (StdErr) をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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