首页 >后端开发 >php教程 >如何从 PHP 中的 `exec()` 捕获标准错误 (StdErr)?

如何从 PHP 中的 `exec()` 捕获标准错误 (StdErr)?

Barbara Streisand
Barbara Streisand原创
2024-12-13 02:54:09267浏览

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

Exec() 中的 PHP 错误处理与 StdErr

在 PHP 中,exec() 函数执行命令并返回结果,包括如果执行成功则返回 URL。但是,您可能还想通过标准错误 (StdErr) 流访问错误消息。操作方法如下:

处理 StdErr 的一种方法是通过 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn