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

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

Barbara Streisand
发布: 2024-12-04 18:12:13
原创
647 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板