2014-07-19 29 views
0

正如php文檔中顯示的錯誤報告。術語錯誤報告級別在非專業術語中意味着什麼?錯誤報告級別是什麼意思?

http://php.net/manual/en/function.error-reporting.php

我知道如何使用的error_reporting()函數。但技術術語對我來說是毫無意義的。

+0

**建議:**當您正在處理您的代碼時,請始終將其設置爲「-1」,並修復您得到的任何錯誤,警告和通知。 '的error_reporting(-1);'。 –

+0

**建議:**不要將其設置爲「-1」,instsead將其設置爲「E_ALL」。 '-1'在語義上沒有意義,並且不能保證在每個系統上工作。 ;-) – kba

+0

@kba爲什麼它不能在某些系統上工作?這只是開啓所有位的一種方式;如果這不能保證工作,那麼肯定系統必須被破壞。 –

回答

3

它決定顯示哪種消息。

如果error_reporting設置爲0,則根本不顯示任何錯誤或警告。

如果設定爲顯示E_NOTICE,你會看到公告,如:

未定義的變量:VAR在...

如果E_DEPRECATED被激活,你會看到這樣的消息如:

不推薦使用:mysql_connect():mysql擴展已棄用,將來會被刪除:使用mysqli或PDO代替...

等等。不同的標誌(E_ERROR,E_WARNING,E_PARSE)呈現不同級別的嚴重性。

通常,建議在開發環境中啓用所有消息,但不會在生產環境中顯示任何消息。

+0

感謝您的幫助! – user3559356

0

它設置PHP報告錯誤之前(例如通過打印消息)錯誤的最低嚴重性。有不同類型的錯誤,從致命(發生的事情和腳本無法繼續)到警告(可能不安全的代碼)到棄用警告(代碼可用,但將來無法工作)或一般通知(通常是無害的但可能會導致錯誤)。

在生產中,出於安全原因(error_reporting(0)),您希望禁用它們,但在開發過程中,最好將它們保留在E_ALL上,以便進行調試並改進/驗證您的代碼。

查看list of error reporting constants。它大致排列得最嚴重到最不嚴重,並清楚地解釋每個級別。

0

事實上,在大多數情況下,只有2個有趣的error_reporting級別:0E_ALL(假設您使用PHP 5。4+)

0 - 意味着沒有錯誤將顯示在所有 - 你應該使用在生產這個級別(你不希望展現給用戶或攻擊者)

E_ALL任何錯誤 - 當你開發你的網站應顯示所有的錯誤/警告/通知等簡單地刪除它們

您可以設置使用

ini_set('display_errors,'1'); 
error_reporting(E_ALL); 

時要顯示的錯誤在PHP錯誤報告級別

,如果你想隱藏的所有錯誤,你應該使用:

ini_set('display_errors,'0'); 
error_reporting(0); 

你當然應該閱讀更多關於error_levels,因爲消息給你的信息有什麼錯在你的代碼。例如,如果在消息中您有一些關於棄用的內容,則表示您在此PHP版本中不再推薦您使用的方法,並且應考慮使用其他方法,因爲在將來的PHP版本中,可能會刪除您使用的方法。