在我們的程式開發中,經常會遇到一些程式運行的錯誤,PHP會根據程式的錯誤等級來給予給出不同的提示。例如什麼警告,錯誤等錯誤,但是這些錯誤是可以設定的,如果只是一些小的錯誤,我們可以讓這些錯誤不報出來。這就需要用到我們本章所講解的如何設定PHP的報錯等級。
在PHP中,錯誤等級的設定有兩種方法:
第一種:這種方式設定error_reporting後,重啟web伺服器,就會永久生效。
這裡以xampp整合軟體套件為例,開啟設定檔php.ini,查看錯誤報告等級error_reporting的預設值,如下:
error_reporting=E_ALL & ~ E_DEPRECATED & ~E_STRICT
意思是報告所有的錯誤,但除了E_DEPRECATED和E_STRICT這兩種。
將其修改為:
error_reporting=E_ALL & ~E_NOTICE
意思是報告所有的錯誤,但除了E_NOTICE這一種。這也是最常用的錯誤報告級別,它不會報告注意類別(如:使用了未定義的變數)的錯誤。
儲存,重啟web伺服器後生效。
第二種:透過error_reporting()函數設定報錯級別,種方式設定後,可以立即生效。但僅限於在目前腳本中的error_reporting()函數呼叫的後面區域。
error_reporting()函數的語法如下:
int error_reporting ([ int $level ] )
參數level是指定錯誤的級別,如果沒有設定,會傳回目前的報錯層級。下邊是給出level 參數的值。
值 | 常數 | 說明 |
1 | E_ERROR | 報告導致腳本終止執行的致命錯誤 |
2 | E_WARNING | 報告執行時期的警告類別錯誤(腳本不會終止執行) |
4 | #E_PARSE | 報告編譯時的語法解析錯誤 |
8 | E_NOTICE | 報告通知類別錯誤,腳本可能會產生錯誤 |
16 | E_CORE_ERROR | PHP啟動時初始化過程中的致命錯誤。 |
32 | E_CORE_WARNING | #PHP啟動時初始化過程中的警告(非致命性錯)。 |
64 | E_COMPILE_ERROR | 編譯時致命性錯。這就像由Zend腳本引擎產生了一個E_ERROR。 |
128 | E_COMPILE_WARNING | 編譯時警告(非致命性錯)。這就像由Zend腳本引擎產生了一個E_WARNING警告。 |
256 | E_USER_ERROR | 使用者自訂的警告訊息。這就像是使用PHP函數trigger_error(程式設計師設定的一個E_WARNING警告) |
512 | E_USER_WARNING | 使用者自訂的警告訊息。這就像是使用PHP函數trigger_error(程式設計師設定的一個E_WARNING警告) |
1024 | E_USER_NOTICE | 使用者自訂的警告訊息。這就像是使用PHP函數trigger_error(程式設計師設定的一個E_WARNING警告) |
2048 | E_STRICT | #編碼標準化警告。允許PHP建議如何修改程式碼以確保最佳的互通性向前相容性。 |
4096 | E_RECOVERABLE_ERROR | 開捕致命錯誤。這就像一個E_ERROR,但可以透過使用者定義的處理來捕獲(又見set_error_handler()) |
8191 | E_ALL | #所有的錯誤和警告(不包括E_STRICT) (E_STRICT will be part of E_ALL as of PHP 6.0) |
任意数目的以上选项都可以用“或”来连接(用 OR 或 |),这样可以报告所有需要的各级别错误。
例子:
下面的代码关闭了用户自定义的错误和警告,执行了某些操作,然后恢复到原始的报错级别:
<?php //禁用错误报告 error_reporting(0); //报告运行时错误 error_reporting(E_ERROR | E_WARNING | E_PARSE); //报告所有错误 error_reporting(E_ALL); ?>
一个简单的例子是:
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
他表示php错误,警告,语法错误,提醒都返错。
以上是PHP如何設定報錯等級?的詳細內容。更多資訊請關注PHP中文網其他相關文章!