我有一個簡單的自定義錯誤處理程序,它在錯誤日誌文件中寫入一些有用的調試信息。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