最新的Web開發教程
 

PHP 5錯誤處理函數


PHP錯誤簡介

誤差函數用於處理錯誤處理和日誌記錄。

錯誤功能允許我們定義自己的錯誤處理規則,以及修改錯誤可以被記錄的方式。

日誌記錄功能,使我們能夠直接發送消息給其他機器,電子郵件或系統日誌。

錯誤報告功能使我們能夠定制給出什麼樣的水平和類型的錯誤反饋。


安裝

PHP的錯誤函數是PHP核心的一部分。 沒有安裝是需要使用這些功能。


運行時配置

誤差函數的行為受php.ini的影響。

錯誤和日誌記錄配置選項:

名稱 默認 描述 多變
使用error_reporting 空值 設置錯誤報告級別(整數或命名常量) PHP_INI_ALL
的display_errors “1” 指定錯誤是否應該打印在屏幕上,還是需要從用戶隱藏。
注:此功能不應該在生產系統中使用(只支持你的發展)
PHP_INI_ALL
display_startup_errors “0” 即使display_errors設置為上,不顯示PHP的啟動順序期間發生的錯誤
注:強烈建議保持display_startup_errors關閉,除了調試
PHP_INI_ALL
log_errors “0” 定義腳本錯誤消息是否應該被記錄到服務器錯誤日誌或者error_log中。
注:強烈建議使用錯誤日誌,而不是錯誤的顯示生產網站
PHP_INI_ALL
log_errors_max_len “1024” 以字節為單位的log_errors的最大長度。 值"0"可以用於不應用任何最大長度在所有。 該長度被施加到記錄錯誤,錯誤顯示,並且還$ php_errormsg中(available since PHP 4.3) PHP_INI_ALL
ignore_repeated_errors “0” 指定是否記錄重複的錯誤消息。 當設置為"1"將無法登錄與在同一行的同一文件的重複錯誤錯誤(available since PHP 4.3) PHP_INI_ALL
ignore_repeated_source “0” 指定是否記錄重複的錯誤消息。 當設置為"1"它將不記錄與來自不同的文件或源極線的重複錯誤的錯誤(available since PHP 4.3) PHP_INI_ALL
report_memleaks “1” 如果設置為"1" (the default) ,該參數將顯示由Zend的內存管理器檢測內存洩漏的報告(available since PHP 4.3) PHP_INI_ALL
的track_errors “0” 如果設置為"1"最後的錯誤消息將永遠存在於變量$ php_errormsg中 PHP_INI_ALL
html_errors “1” 關閉HTML標籤錯誤信息 PHP_INI_ALL
PHP_INI_SYSTEM在PHP <= 4.2.3。
xmlrpc_errors “0” 關閉正常的錯誤報告和格式錯誤的XML-RPC錯誤信息(available since PHP 4.1) PHP_INI_SYSTEM
xmlrpc_error_number “0” 作為XML-RPC的faultcode元素的值(available since PHP 4.1) PHP_INI_ALL
docref_root “” (可用自PHP 4.3) PHP_INI_ALL
docref_ext “” (可用自PHP 4.3.2) PHP_INI_ALL
error_prepend_string 空值 指定了一個錯誤消息之前的字符串,以輸出 PHP_INI_ALL
error_append_string 空值 的錯誤消息後指定一個字符串,以輸出 PHP_INI_ALL
error_log中 空值 指定在腳本錯誤應該被記錄的文件的名稱。 該文件應該是Web服務器的用戶可寫的。 如果使用了特殊值系統日誌,錯誤會發送到系統日誌,而不是 PHP_INI_ALL

PHP錯誤和記錄功能

功能 描述
debug_backtrace() 生成一個回溯
debug_print_backtrace() 打印回溯
error_get_last() 返回上次發生錯誤
error_log() 發送錯誤信息到日誌,以一個文件或郵件帳戶
error_reporting() 報告哪些錯誤指定
restore_error_handler() 恢復以前的錯誤處理程序
restore_exception_handler() 恢復以前的異常處理程序
set_error_handler() 設置一個用戶定義的錯誤處理函數
set_exception_handler() 設置一個用戶定義的異常處理函數
trigger_error() 創建用戶級別的錯誤消息
user_error() 的別名trigger_error()

PHP 5預定義的錯誤和日誌常量

不變 描述
1 E_ERROR 致命的運行時錯誤。 無法從恢復的錯誤。 腳本執行停止
2 E_WARNING 運行時警告(non-fatal errors) 。 腳本執行不被中斷。
4 E_PARSE 編譯時解析錯誤。 分析應該只由分析器生成的錯誤
8 E_NOTICE 運行時通知。 腳本發現這可能是一個錯誤,但通常運行一個腳本時,也可能發生
16 E_CORE_ERROR 在PHP啟動致命錯誤。 這就好比E_ERROR,除了它是由PHP的核心生成
32 E_CORE_WARNING 在PHP啟動非致命錯誤。 這就好比E_WARNING,除了它是由PHP的核心生成
64 E_COMPILE_ERROR 致命編譯時錯誤。 這就好比E_ERROR,除了它是生成通過了Zend腳本引擎
128 E_COMPILE_WARNING 非致命編譯時錯誤。 這就好比E_WARNING,除了它是通過產生由在Zend腳本引擎
256 E_USER_ERROR 致命的用戶生成錯誤。 這就好比E_ERROR,除了它是在PHP代碼通過使用PHP函數生成trigger_error()
512 E_USER_WARNING 非致命的用戶生成的警告。 這就好比E_WARNING,除了它是在PHP代碼通過使用PHP函數生成trigger_error()
1024 E_USER_NOTICE 用戶生成通知。 這就好比E_NOTICE,除了它是在PHP代碼通過使用PHP函數生成trigger_error()
2048 E_STRICT 啟用有PHP建議改變你的代碼,這將確保你的代碼的最佳的互操作性和向前兼容性(自PHP 5起,但不包括在E_ALL直到PHP 5.4)
4096 E_RECOVERABLE_ERROR 捕獲的致命錯誤。 指示發生了可能危險的錯誤,但並沒有離開引擎處於不穩定的狀態。 如果錯誤不是由用戶定義的手柄抓,應用程序終止,因為它是一個E_ERROR (Since PHP 5.2)
8192 E_DEPRECATED 運行時通知。 啟用該接收有關的代碼,將不會在以後的版本警告(Since PHP 5.3)
16384 E_USER_DEPRECATED 用戶生成警告信息。 這就好比E_DEPRECATED,除了它是在PHP代碼通過使用PHP函數生成trigger_error()自PHP 5.3)
32767 E_ALL 啟用所有PHP錯誤和警告(except E_STRICT in versions < 5.4)