首页 >后端开发 >php教程 >使用 PHP 的 exec() 后如何捕获和处理 StdErr 输出?

使用 PHP 的 exec() 后如何捕获和处理 StdErr 输出?

Barbara Streisand
Barbara Streisand原创
2024-12-04 18:12:13619浏览

How to Capture and Handle StdErr Output After Using PHP's exec()?

如何在 PHP 中的 Exec() 之后访问 StdErr

在 PHP 中,exec() 函数执行命令并将其输出返回为一个字符串。但是,如果该命令产生错误,这些错误通常会被抑制并且不会显示。要处理此类错误,了解 stderr 流至关重要。

使用 proc_open 读取 StdErr

要在执行命令后访问 stderr,可以使用 proc_open() 函数,它提供了对执行过程的精细控制。它使您能够为 stdin、stdout 和 stderr 定义输入/输出流。

这是一个示例:

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

$process = proc_open('./test.sh', $descriptorspec, $pipes, dirname(__FILE__), null);

$stdout = stream_get_contents($pipes[1]);
fclose($pipes[1]);

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

通过从 $pipes[2] 流读取,您可以访问执行命令产生的 stderr 输出。

以上是使用 PHP 的 exec() 后如何捕获和处理 StdErr 输出?的详细内容。更多信息请关注PHP中文网其他相关文章!

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