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

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

Barbara Streisand
发布: 2024-12-13 02:54:09
原创
273 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板