PHP Error 和 Logging 函式

PHP Error 和 Logging 簡介

Error 和 Logging 函式允許您對錯誤進行處理和記錄。

Error 函式允許使用者定義錯誤處理規則,並修改記錄錯誤的方式。

Logging 函式允許使用者對應用程式進行日誌記錄,並把日誌訊息傳送到電子郵件、系統日誌或其他的機器。


執行配置

error 函式受 php.ini 配置檔案影響。

錯誤和日誌配置選項:

引數 預設值 描述 可修改範圍
error_reporting NULL 設定 PHP 的報錯級別並返回當前級別(數字或常量)。 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 的最大位元組數. 在 error_log 會新增有關錯誤源的資訊。預設值為1024,如果設定為0表示不限長度。該長度設定對記錄的錯誤,顯示的錯誤,以及 $php_errormsg都會有限制作用。 PHP_INI_ALL
ignore_repeated_errors "0" 不記錄重複的資訊。重複的錯誤必須出現在同一個檔案中的同一行程式碼上,除非 ignore_repeated_source 設定為true。 PHP_INI_ALL
ignore_repeated_source "0" 忽略重複訊息時,也忽略訊息的來源。當該設定開啟時,重複資訊將不會記錄它是由不同的檔案還是不同的原始碼行產生的。 PHP_INI_ALL
report_memleaks "1" 如果這個引數設定為Off,則記憶體洩露資訊不會顯示 (在 stdout 或者日誌中)。 PHP_INI_ALL
track_errors "0" 如果開啟,最後的一個錯誤將永遠存在於變數 $php_errormsg 中。 PHP_INI_ALL
html_errors "1" 在錯誤資訊中關閉HTML標籤。 PHP_INI_ALL
PHP_INI_SYSTEM in PHP <= 4.2.3.
xmlrpc_errors "0" 關閉正常的錯誤報告,並將錯誤的格式設定為XML-RPC錯誤資訊的格式。 PHP_INI_SYSTEM
xmlrpc_error_number "0" 用作 XML-RPC faultCode 元素的值。 PHP_INI_ALL
docref_root "" 新的錯誤資訊格式包含了對應的參考頁面,該頁面對錯誤進行具體描述,或者描述了導致該錯誤發生的函式。
為了提供手冊的頁面,你可以在PHP官方站點下載對應語言的手冊,並在ini中設定網址到本地對應的地址。
如果你的本地手冊拷貝可以使用"/manual/" 訪問,你就可以簡單的設定 docref_root=/manual/。
另外你還需要設定 docref_ext 匹配你本地檔案的字尾名 docref_ext=.html。當然也可以設定一個外部的參考地址。
例如你可以設定 docref_root=http://manual/en/ 或者 docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F"
PHP_INI_ALL
docref_ext "" 參見 docref_root. PHP_INI_ALL
error_prepend_string NULL 錯誤資訊之前輸出的內容。 PHP_INI_ALL
error_append_string NULL 錯誤資訊之後輸出的內容。 PHP_INI_ALL
error_log NULL 設定指令碼錯誤將被記錄到的檔案。該檔案必須是web伺服器使用者可寫的。 PHP_INI_ALL

安裝

Error 和 Logging 函式是 PHP 核心的組成部分。無需安裝即可使用這些函式。


PHP Error 和 Logging 函式

PHP:指示支援該函式的最早的 PHP 版本。

函式 描述 PHP
debug_backtrace() 生成 backtrace。 4
debug_print_backtrace() 列印 backtrace。 5
error_get_last() 獲得最後發生的錯誤。 5
error_log() 向伺服器錯誤記錄、檔案或遠端目標傳送一個錯誤。 4
error_reporting() 規定報告哪個錯誤。 4
restore_error_handler() 恢復之前的錯誤處理程式。 4
restore_exception_handler() 恢復之前的異常處理程式。 5
set_error_handler() 設定使用者自定義的錯誤處理函式。 4
set_exception_handler() 設定使用者自定義的異常處理函式。 5
trigger_error() 建立使用者自定義的錯誤訊息。 4
user_error() trigger_error() 的別名。 4


PHP Error 和 Logging 常量

PHP:指示支援該常量的最早的 PHP 版本。

常量 描述 PHP
1 E_ERROR 執行時致命的錯誤。不能修復的錯誤。停止執行指令碼。
2 E_WARNING 執行時非致命的錯誤。沒有停止執行指令碼。
4 E_PARSE 編譯時的解析錯誤。解析錯誤應該只由解析器生成。
8 E_NOTICE 執行時的通知。指令碼發現可能是一個錯誤,但也可能在正常執行指令碼時發生。
16 E_CORE_ERROR PHP 啟動時的致命錯誤。這就如同 PHP 核心的 E_ERROR。 4
32 E_CORE_WARNING PHP 啟動時的非致命錯誤。這就如同 PHP 核心的 E_WARNING。 4
64 E_COMPILE_ERROR 編譯時致命的錯誤。這就如同由 Zend 指令碼引擎生成的 E_ERROR。 4
128 E_COMPILE_WARNING 編譯時非致命的錯誤。這就如同由 Zend 指令碼引擎生成的 E_WARNING。 4
256 E_USER_ERROR 使用者生成的致命錯誤。這就如同由程式設計師使用 PHP 函式 trigger_error() 生成的 E_ERROR。 4
512 E_USER_WARNING 使用者生成的非致命錯誤。這就如同由程式設計師使用 PHP 函式 trigger_error() 生成的 E_WARNING。 4
1024 E_USER_NOTICE 使用者生成的通知。這就如同由程式設計師使用 PHP 函式 trigger_error() 生成的 E_NOTICE。 4
2048 E_STRICT 執行時的通知。PHP 建議您改變程式碼,以提高程式碼的互用性和相容性。 5
4096 E_RECOVERABLE_ERROR 可捕獲的致命錯誤。這就如同一個可以由使用者定義的控制代碼捕獲的 E_ERROR(見 set_error_handler())。 5
6143 E_ALL 所有的錯誤和警告的級別,除了 E_STRICT(自 PHP 6.0 起,E_STRICT 將作為 E_ALL的一部分)。 5