PHP中如何設定error_reporting錯誤報告級別

科技小能手發表於2017-11-12

錯誤報告級別:指定了在什麼情況下,指令碼程式碼中的錯誤(這裡的錯誤是廣義的錯誤,包括E_NOTICE注意、E_WARNING警告、E_ERROR致命錯誤等)會以錯誤報告的形式輸出。

 

設定錯誤報告級別的方法:

 

1. 修改PHP的配置檔案php.ini

這種方式設定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伺服器後生效。

 

2. 使用error_reporting()函式

這種方式設定後,可以立即生效。但僅限於在當前指令碼中的error_reporting()函式呼叫的後面區域。

int error_reporting ([ int $level ] )

引數可以是整型或對應的常量識別符號,推薦使用常量的形式。返回值為當前位置處起作用的錯誤報告級別的值(整型值)。

下面列舉一些錯誤報告級別:

值          常量                     說明

1           E_ERROR             報告導致指令碼終止執行的致命錯誤

2           E_WARNING       報告執行時的警告類錯誤(指令碼不會終止執行)

4           E_PARSE             報告編譯時的語法解析錯誤

8           E_NOTICE           報告通知類錯誤,指令碼可能會產生錯誤

32767   E_ALL                  報告所有的可能出現的錯誤(不同的PHP版本,常量E_ALL的值也可能不同)

 

error_reporting(E_ALL ^ E_NOTICE);    // 除了E_NOTICE之外,報告所有的錯誤

error_reporting(E_ERROR);       // 只報告致命錯誤

echo error_reporting(E_ERROR | E_WARNING | E_NOTICE);   // 只報告E_ERROR、E_WARNING 和 E_NOTICE三種錯誤

 

注意:配置檔案php.ini中display_errors的預設值為On,代表顯示錯誤提示,如果設定為Off,就會關閉所有的錯誤提示。

本文轉自 頂風走千里 51CTO部落格,原文連結:http://blog.51cto.com/13505030/2068128


相關文章