PHP Error 和 Logging 函數(shù)-7.5PHP 參考手冊

閱讀 ?·? 發(fā)布日期 2019-06-29 08:38 ?·? admin

PHP Error 簡介

Error 和 Logging 函數(shù)允許您對錯誤進行處理和記錄。

Error 函數(shù)允許用戶定義錯誤處理規(guī)則,并修改記錄錯誤的方式。

Logging 函數(shù)允許用戶對應(yīng)用程序進行日志記錄,并把日志消息發(fā)送到電子郵件、系統(tǒng)日志或其他的機器。

error 函數(shù)用于完成錯誤處理和日志記錄。

error 函數(shù)允許我們定義自己的錯誤處理規(guī)則,并修改錯誤記錄方式。

logging 函數(shù)允許我們將消息直接發(fā)送到其他機器、電郵或系統(tǒng)日志。

error reporting 函數(shù)允許我們錯誤的類型和層級。

安裝

PHP error 函數(shù)是 PHP 核心的一部分。無需安裝即可使用這些函數(shù)。

Runtime 配置

error 函數(shù)的行為受到 php.ini 中設(shè)置的影響。

Errors 和 logging 配置選項如下:

名稱 默認(rèn)值 描述 可修改范圍
error_reporting NULL 設(shè)置錯誤報告級別(整數(shù)或命名常量) PHP_INI_ALL
display_errors "1"

規(guī)定是否將錯誤作為輸出輸出到屏幕,或者對用戶隱藏。

注意:該特性不應(yīng)在生產(chǎn)系統(tǒng)上使用(僅支持開發(fā))

PHP_INI_ALL
display_startup_errors "0"

即使 display_errors 設(shè)置為開啟, PHP 啟動過程中的錯誤信息也不會被顯示。

注釋:強烈建議除了調(diào)試目的以外,將 display_startup_errors 設(shè)置為關(guān)閉。

PHP_INI_ALL
log_errors "0"

設(shè)置是否將腳本運行的錯誤信息記錄到服務(wù)器錯誤日志或者 error_log 之中。

注釋:這是與服務(wù)器相關(guān)的特定配置項。

注釋:在生產(chǎn)系統(tǒng)中,強烈建議你使用錯誤日志記錄web站點上顯示的錯誤信息。

PHP_INI_ALL
log_errors_max_len "1024"

設(shè)置 log_errors 的最大字節(jié)數(shù)。在 error_log 會添加有關(guān)錯誤源的信息。

默認(rèn)值為 1024,如果設(shè)置為 0 表示不限長度。

該長度設(shè)置對記錄的錯誤,顯示的錯誤,以及 $php_errormsg 都會有限制作用。

PHP_INI_ALL
ignore_repeated_errors "0"

規(guī)定是否記錄重復(fù)的錯誤信息。

重復(fù)的錯誤必須出現(xiàn)在同一個文件中的同一行代碼上,除非 ignore_repeated_source 設(shè)置為 true。

PHP_INI_ALL
ignore_repeated_source "0"

規(guī)定是否記錄重復(fù)的錯誤信息。忽略重復(fù)消息時,也忽略消息的來源。

當(dāng)該設(shè)置開啟時,重復(fù)信息將不會記錄它是由不同的文件還是不同的源代碼行產(chǎn)生的。

PHP_INI_ALL
report_memleaks "1" 如果該參數(shù)被設(shè)置為 On(默認(rèn)),則會顯示由 Zend 內(nèi)存管理器偵測到的內(nèi)存泄露報告。 PHP_INI_ALL
track_errors "0" 如果開啟,最后一個錯誤將永遠(yuǎn)存在于變量 $php_errormsg 中。 PHP_INI_ALL
html_errors "1" 在錯誤信息中關(guān)閉 HTML 標(biāo)簽。
  • PHP_INI_ALL
  • PHP_INI_SYSTEM in PHP <= 4.2.3.
xmlrpc_errors "0" 如果啟用,則關(guān)閉正常的錯誤報告,并將錯誤的格式設(shè)置為 XML-RPC 錯誤信息的格式。 PHP_INI_SYSTEM
xmlrpc_error_number "0" 用作 XML-RPC faultCode 元素的值。 PHP_INI_ALL
docref_root "" (available since PHP 4.3) PHP_INI_ALL
docref_ext "" (available since PHP 4.3.2) PHP_INI_ALL
error_prepend_string NULL 規(guī)定錯誤信息之前輸出的字符串。 PHP_INI_ALL
error_append_string NULL 規(guī)定錯誤信息之后輸出的字符串。 PHP_INI_ALL
error_log NULL

設(shè)置腳本錯誤將被記錄到的文件。該文件必須是 web 服務(wù)器用戶可寫的。

如果使用了特殊值 syslog,則將錯誤信息發(fā)送到系統(tǒng)日志記錄器。

PHP_INI_ALL

PHP Error 和 Logging 函數(shù)

函數(shù) 描述
debug_backtrace() 生成 backtrace。
debug_print_backtrace() 打印 backtrace。
error_get_last() 返回最后發(fā)生的錯誤。
error_log() 向服務(wù)器錯誤記錄、文件或遠(yuǎn)程目標(biāo)發(fā)送錯誤消息。
error_reporting() 規(guī)定報告哪個錯誤。
restore_error_handler() 恢復(fù)之前的錯誤處理程序。
restore_exception_handler() 恢復(fù)之前的異常處理程序。
set_error_handler() 設(shè)置用戶自定義的錯誤處理函數(shù)。
set_exception_handler() 設(shè)置用戶自定義的異常處理函數(shù)。
trigger_error() 創(chuàng)建用戶級別的錯誤消息。
user_error() trigger_error() 的別名。

PHP 5 預(yù)定義錯誤和日志常量

常量 描述
1 E_ERROR 運行時致命的錯誤。不能修復(fù)的錯誤。終止執(zhí)行腳本。
2 E_WARNING 運行時非致命的錯誤。不終止執(zhí)行腳本。
4 E_PARSE 編譯時語法解析錯誤。解析錯誤僅僅由分析器產(chǎn)生。
8 E_NOTICE 運行時通知。表示腳本遇到可能會表現(xiàn)為錯誤的情況,但是在可以正常運行的腳本里面也可能會有類似的通知。
16 E_CORE_ERROR 在 PHP 初始化啟動過程中發(fā)生的致命錯誤。該錯誤類似 E_ERROR,但是是由 PHP 引擎核心產(chǎn)生的。
32 E_CORE_WARNING PHP 初始化啟動過程中發(fā)生的警告 (非致命錯誤) 。類似 E_WARNING,但是是由 PHP 引擎核心產(chǎn)生的。
64 E_COMPILE_ERROR 致命編譯時錯誤。類似 E_ERROR, 但是是由 Zend 腳本引擎產(chǎn)生的。
128 E_COMPILE_WARNING 編譯時警告 (非致命錯誤)。類似 E_WARNING,但是是由 Zend 腳本引擎產(chǎn)生的。
256 E_USER_ERROR 用戶產(chǎn)生的錯誤信息。類似 E_ERROR, 但是是由用戶自己在代碼中使用PHP函數(shù) trigger_error()來產(chǎn)生的。
512 E_USER_WARNING 用戶產(chǎn)生的警告信息。類似 E_WARNING, 但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error() 來產(chǎn)生的。
1024 E_USER_NOTICE 用戶產(chǎn)生的通知信息。類似 E_NOTICE, 但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error() 來產(chǎn)生的。
2048 E_STRICT 啟用 PHP 對代碼的修改建議,以確保代碼具有最佳的互操作性和向前兼容性。
4096 E_RECOVERABLE_ERROR 可被捕捉的致命錯誤。它表示發(fā)生了一個可能非常危險的錯誤,但是還沒有導(dǎo)致 PHP 引擎處于不穩(wěn)定的狀態(tài)。 如果該錯誤沒有被用戶自定義句柄捕獲 (參見 set_error_handler()),將成為一個 E_ERROR 從而腳本會終止運行。
8192 E_DEPRECATED 運行時通知。啟用后將會對在未來版本中可能無法正常工作的代碼給出警告。
16384 E_USER_DEPRECATED 用戶產(chǎn)生的警告信息。類似 E_DEPRECATED, 但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error() 來產(chǎn)生的。
32767 E_ALL E_STRICT 除非的所有錯誤和警告信息。