2012-12-19 54 views
1

Possible Duplicate:
How do I catch a PHP Fatal ErrorPHP忽略自定義錯誤處理程序

我想創建一個自定義的錯誤處理程序,但PHP忽略它仍然使用內置的錯誤處理程序。下面的例子給出了一個內置的致命錯誤,因爲test()沒有被定義:

function critical_error($error_number,$error_string,$error_file,$error_line,$error_context) { 
    echo "<strong>error:</strong> echo ".$error_string; 
    exit(); 
} 

set_error_handler("critical_error",8191); 
test(); 
exit; 

有什麼建議嗎?

回答

5

您可能正在定義錯誤級別錯誤。嘗試使用:

set_error_handler("critical_error", E_ALL); 

還要注意的是:

The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called.

但是,如果沒有您的完整的腳本(包括test())這是很難說。我已經在我的本地服務器上測試過它,一切正常。

+0

不要以爲他是8191是E_RECOVERABLE_ERROR及以上的所有內容。 http://php.net/manual/en/errorfunc.constants.php –

+0

你是對的通知部分。 _致命錯誤:調用未定義的函數__是'E_ERROR',用戶定義的錯誤處理程序不會被觸發。 –

+2

感謝您的建議,我認爲問題出在這裏,我沒有添加E_ALL。 test()沒有定義,我希望PHP給我一個致命的錯誤,看看自定義錯誤處理程序是否會捕獲它。 – mauzilla

相關問題