我有通过exec函数从其他php脚本运行的php脚本:
exec("php /home/www/someScript.php 1>> /home/www/log.txt 2>&1");
如果出现错误,log.txt仅包含以下错误消息:
ERROR: the server encountered an internal error and was unable to complete your request.
但是当我使用来自CLI的完全相同的命令手动运行它时,我得到以下(和正确的输出):
PHP Fatal error: Call to a member function toArray() on a non-object in /home/www/someScript.php on line 50
ERROR: the server encountered an internal error and was unable to complete your request.
致命错误抑制的原因是什么?如何将其正确输出到日志?
感谢。
答案 0 :(得分:0)
这不会解决您的问题,因此可能不是答案,但它也不适合评论。
正如我在评论部分中所说,尝试使用include
与set_error_handler
一起使用。
set_error_handler(function($errno, $errstr, $errfile, $errline, array $errcontext){
echo "Error #$errno: $errstr";
echo "\ton $errfile:$errline\n";
echo "Stack trace:\n";
foreach ($errcontext as $e) {
echo "\t$e\n";
}
});
include "/home/www/someScript.php";
restore_error_handler();
这样,您的脚本在失败时不会中断,但您没有使用古怪的系统功能。然后我们就可以开始看看到底发生了什么。