PHP如何設定報錯層級?

來源:互聯網
上載者:User
在我們的程式開發中,經常會遇到一些程式啟動並執行錯誤,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錯誤,警告,語法錯誤,提醒都返錯。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.