我有一个简单的自定义错误处理程序,它在错误日志文件中写入一些有用的调试信息。set_error_handler()不能为FATAL错误工作
这是一切工作,但它不会被触发致命错误。
有什么办法解决这个问题?
目前绕过这种情况下我已经注册了关断功能太多,检查error_get_last()
我有一个简单的自定义错误处理程序,它在错误日志文件中写入一些有用的调试信息。set_error_handler()不能为FATAL错误工作
这是一切工作,但它不会被触发致命错误。
有什么办法解决这个问题?
目前绕过这种情况下我已经注册了关断功能太多,检查error_get_last()
不,那只是一个set_error_handler()
限制;它不处理所有错误。
以下错误类型不能与用户定义的函数来处理:
E_ERROR
,E_PARSE
,E_CORE_ERROR
,E_CORE_WARNING
,E_COMPILE_ERROR
,E_COMPILE_WARNING
,大部分E_STRICT
其中set_error_handler()
被称为在文件中提出的。
register_shutdown_function()
和error_get_last()
是一个体面的解决方法。
我们无法通过这种方式获取回溯... – Loenix 2016-01-12 17:05:14
只有很少的方法可以解决它,通过使用register_shutdown_function()
,然后检查该函数内是否发生错误。
PHP有log_errors
是有原因的,你可以让PHP日志任何错误日志或日志文件而无需定制一行代码。因此,根本不需要使用set_error_handler()
用于此目的,除非需要例如一个堆栈跟踪。
[`以下错误类型不能与用户定义的函数处理:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,最E_STRICT的升高,其中的set_error_han dler()是called.`在文件中](HTTP: //us.php.net/set_error_handler) – animuson 2011-12-15 23:13:58
这个问题错过了一个链接:[PHP的:自定义错误处理程序 - 处理解析和致命错误](http://stackoverflow.com/q/1900208/367456)。 – hakre 2012-06-22 10:43:33