有没有办法重定向正在执行的PHP脚本的输出?
当然,通过命令行启动脚本时这很简单。但是,在脚本启动之后是如何完成的?
注意:我需要捕获语法错误以及以及。
答案 0 :(得分:1)
即使在命令行脚本中也可以使用PHP的output control:
echo "123\n";
ob_start();
echo "456\n";
$s = ob_get_contents();
ob_end_clean();
echo "*$s";
答案 1 :(得分:1)
如果要捕获解析器错误,则需要:
确保display_errors
为On
设置error_prepend_string
和error_append_string
从您可能正在执行的每个PHP文件之前运行的auto_prepend文件中调用ob_start
。
像往常一样使用set_error_handler
,并通过指定的输出缓冲区进行回调筛选,查找自定义的error_prepend_string和error_append_string。如果你找到它,那么你可以在任何你想要的地方分流输出。如果你不这样做,那么就把它放在通常的任何地方。
大部分可以通过ini_set
调用来实现,但需要在php.ini中指定auto_prepend文件。
答案 2 :(得分:0)
语法错误将输出到STDERR,而不是STDOUT。确保你还在你的pipline中重定向STDERR ......
./myscript | myfile.php &> out.txt
答案 3 :(得分:-2)