如何将PHP error_log()语句回显到输出缓冲区
我用来开发一个PHPWeb应用程序,并使用其内置的PHPUnit测试运行程序。在IDE内的输出窗口中,它显示输出缓冲区(例如,任何已回响的内容) 我可以通过使用如何将PHP error_log()语句回显到输出缓冲区,php,phpunit,echo,phpstorm,error-log,Php,Phpunit,Echo,Phpstorm,Error Log,我用来开发一个PHPWeb应用程序,并使用其内置的PHPUnit测试运行程序。在IDE内的输出窗口中,它显示输出缓冲区(例如,任何已回响的内容) 我可以通过使用ini\u集('display\u errors','On')和error\u reporting(E\u ALL)看到错误显示。但是,任何使用error\u log()的输出都不会显示(但会显示在错误日志中) 有没有办法让写入错误日志的任何内容也显示在输出缓冲区中?足够简单:包装函数 function error_log_out($me
ini\u集('display\u errors','On')
和error\u reporting(E\u ALL)
看到错误显示。但是,任何使用error\u log()
的输出都不会显示(但会显示在错误日志中)
有没有办法让写入错误日志的任何内容也显示在输出缓冲区中?足够简单:包装函数
function error_log_out($message, $message_type=0, $destination=0, $extra_headers="") {
error_log($message,$message_type,$destination,$extra_headers);
echo $message; // optionally add some formatting
}
我发现用ini
error\u log
值调用php
我没有写入权限的文件;php会将error\u log()
输出发送到标准输出
$ touch ~/my_php_error.log
$ php -d error_log=~/my_php_error.log -r 'error_log("Hello World");'
# Writes to ~/my_php_error.log
$ chmod -w ~/my_php_error.log
$ php -d error_log=~/my_php_error.log -r 'error_log("Hello World");'
Hello World
# Writes to stdout
-r“…cmd”
也可以代替php文件运行我不想引入新函数。我意识到我们的日志记录是次优的,因为我们正在利用错误日志而不是库;现在努力解决这个问题。啊,好的。理论上,可以通过将error\u log
函数重命名为其他函数,然后按照我的答案中的方式包装该函数,但使用原始名称,从而“钩住”该函数。但这是一个带有调试扩展的主要hax,而且完全是错误的!是的,我不想这么做。注意:我会以某种方式跟踪错误日志文件的起始位置,然后输出任何新写的内容。