在PHP脚本中获取自己的stderr输出的方法

在PHP脚本中获取自己的stderr输出的方法,php,stderr,Php,Stderr,我在谷歌上搜索了很多,但我找到的所有文章都是关于如何编写STDERR,或者如何从使用exec,shell\u exec,proc\u open执行的其他进程中获取STDERR,等等 但是我想知道,我怎样才能得到我自己的脚本的STDERR? (我在CLI脚本中编写了一个web前端,并希望使用所有文件作为“黑匣子”来捕获STDERR,并将JSON返回到客户端)?创建自己的错误处理程序,并在任何需要的地方编写内容: $log = array(); set_error_handler(function

我在谷歌上搜索了很多,但我找到的所有文章都是关于如何编写
STDERR
,或者如何从使用
exec
shell\u exec
proc\u open
执行的其他进程中获取
STDERR
,等等

但是我想知道,我怎样才能得到我自己的脚本的
STDERR


(我在CLI脚本中编写了一个web前端,并希望使用所有文件作为“黑匣子”来捕获
STDERR
,并将
JSON
返回到客户端)?

创建自己的错误处理程序,并在任何需要的地方编写内容:

$log = array();
set_error_handler(function ($no, $str, $file, $line, array $context) use ($log) {
    $message = "$no: $str in $file on line $line";
    $log[] = $message;
    fwrite(STDERR, $message);
});

您可能会尝试从
STDERR
读取,而不是向其写入,但我不确定这是否有效。

也许这会有所帮助:我不想修改“黑匣子”的源代码。我想捕获STDERR。您想从命令行而不是脚本本身捕获STDERR吗?我想从脚本本身捕获STDERR。例如,我有一个输出到STDERR的lib,但是我不能(想要)更改lib以将输出存储在某个数组中。