在 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 和stderr:
$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中文网其他相关文章!