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 |