首頁  >  文章  >  後端開發  >  php報錯等級有哪些

php報錯等級有哪些

青灯夜游
青灯夜游原創
2023-01-28 18:33:004658瀏覽

php報錯等級有:1、E_ERROR致命的運行時錯誤,一般是不可恢復的情況;2、E_WARNING運行時警告(非致命錯誤);3、E_PARSE編譯時語法解析錯誤;4、 E_CORE_ERROR初始化啟動過程中發生的致命錯誤;5、E_CORE_WARNING初始化啟動過程中發生的警告(非致命錯誤);6、E_COMPILE_ERROR;7、E_COMPILE_WARNING等等。

php報錯等級有哪些

本教學操作環境:windows7系統、PHP8版、DELL G3電腦

在我們的程式開發中,常常會遇到一些程式運行的錯誤,PHP會根據程式的錯誤等級來給出給出不同的提示。例如什麼警告,錯誤等錯誤,但是這些錯誤是可以設定的,如果只是一些小的錯誤,我們可以讓這些錯誤不報出來。

php 中的錯誤等級有:

啟用PHP 對程式碼的修改建議,以確保程式碼具有最佳的互通性和向前相容性。 since PHP 54096可被捕捉的致命錯誤。它表示發生了一個可能非常危險的錯誤,但還沒有導致PHP引擎處於不穩定的狀態。如果該錯誤沒有被使用者自訂句柄捕獲,將成為一個 since PHP 5.2.0執行階段通知。啟用後將會對在未來版本中可能無法正常運作的程式碼給予警告。##16384用戶產少的警告訊息。類似 since PHP 5.3.030719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously

PHP設定錯誤報告層級的方法:

#1. 修改PHP的設定檔php.ini

這種方式設定error_reporting後,重啟web伺服器,就會永久生效。
開啟設定檔php.ini,查看錯誤報告等級error_reporting的預設值,如下:

error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT1.

意思是報告所有的錯誤,但除了E_DEPRECATED和E_STRICT這兩種。
將其修改為:

error_reporting=E_ALL &  ~E_NOTICE1.

意思是報告所有的錯誤,但除了E_NOTICE這一種。這也是最常用的錯誤報告級別,它不會報告注意類別(如:使用了未定義的變數)的錯誤。
儲存,重啟web伺服器後生效。

2. 使用error_reporting()函數

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

int error_reporting ([ int $level ] )1.

參數可以是整數或對應的常數標識符,建議使用常數的形​​式。傳回值為目前位置處起作用的錯誤報告等級的值(整數值)。

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

使用 error_reporting(0) 或在函數前面加 @,可以抑制錯誤輸出,以防止錯誤訊息洩漏敏感資訊。

參數level

新的 error_reporting 等級。可以是一個位元遮罩也可以是一個已命名的常數。

建議使用已命名的常數,以確保相容於未來的版本。由於錯誤等級的新增、整數取值範圍的增加,

較長的基於整數的錯誤等級不會總是和預期的表現一致。

level 可能的值(php中的報錯等級)

常見:總共大概15個

php報錯等級有哪些

15個剛好對應二進位的15位。

需要注意的是, 上述表中的字段, 不是一成不變的, 不同的PHP版本, 值可能會不同

任意數目的以上選項都可以用“或”來連接(用OR 或|),這樣可以報告所有需要的各個層級錯誤。

例如,下面的程式碼關閉了使用者自訂的錯誤和警告,執行了某些操作,然後恢復到原始的報錯等級:

例:

<?php
     error_reporting(0);                //禁用错误报告
     error_reporting(E_ERROR | E_WARNING | E_PARSE);//报告运行时错误
     error_reporting(E_ALL);            //报告所有错误
     error_reporting(E_ALL ^ E_NOTICE); //除E_NOTICE报告所有错误,是在php.ini的默认设置
     error_reporting(-1);               //报告所有 PHP 错误
     error_reporting(3);                //不报E_NOTICE
     error_reporting(11);               //报告所有错误
     ini_set(&#39;error_reporting&#39;, E_ALL); // 和 error_reporting(E_ALL); 一样
     error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);//表示php错误,警告,语法错误,提醒都返错。
?>

換算關係:

  • E_All: 十進位為30719,換成二進位為111011111111111

  • #E_NOTICE:十進位為8,換成二進位為1000

  • ~E_NOTICE:對E_NOTICE進行取反操作, 變成0111

  • E_ALL & ~E_NOTICE::E_ALL與~E_NOTICE進行與操作,變成111011111110111,化成十進制就是30711

    可以看到E_ALL並不是顯示了所有的錯誤,第12位為0, 這一位的權重為2的11次方, 為2048,其實就是E_STRICT的值,所以E_ALL是顯示除E_STRICT的所有錯誤等級。

  • E_ALL & ~E_NOTICE 的二進位可以看出,從右至左,第4位和第12位為0,第4位的權重為2的3次方,為8,就是E_NOTICE的值,所以是顯示除了E_STRICT和E_NOTICE的所有錯誤。

推薦學習:《PHP影片教學

1 E_ERROR (integer) #致命的運行時錯誤。這類錯誤一般是不可恢復的情況,例如記憶體分配所導致的問題。後果是導致腳本終止不再繼續運作。
2 #E_WARNING (integer) 執行階段警告(非致命錯誤)。僅給出提示訊息,但是腳本不會終止運行。
4 #E_PARSE (integer) 編譯時語法解析錯誤。解析錯誤僅由分析器產生。
8 #E_NOTICE (integer) 執行階段通知。表示腳本遇到可能會表現為錯誤的情況,但是在可以正常運作的腳本裡面也可能會有類似的通知。
#
16 E_CORE_ERROR(integer) 在PHP初始化啟動過程中發生的致命錯誤。這個錯誤類似E_ERROR,但是由PHP引擎核心產生的。 since PHP 4
#32 E_CORE_WARNING(integer) PHP初始化啟動過程中發生的警告(非致命錯誤) 。類似 E_WARNING,但是由PHP引擎核心產生的。 since PHP 4
64 #E_COMPILE_ERROR(integer) 致命編譯時錯誤。類似E_ERROR, 但是是由Zend腳本引擎產生的。 since PHP 4
128 #E_COMPILE_WARNING(integer) 編譯時警告(非致命錯誤)。類似 E_WARNING,但是由Zend腳本引擎產生的。 since PHP 4
256 #E_USER_ERROR(integer) 使用者產生的錯誤訊息。類似 E_ERROR, 但是是使用者自己在程式碼中使用PHP函數 trigger_error()來產生的。 since PHP 4
512 #E_USER_WARNING(integer) 使用者產生的警告訊息。類似 E_WARNING, 但是是使用者自己在程式碼中使用PHP函數 trigger_error()來產生的。 since PHP 4
1024 #E_USER_NOTICE(integer) 使用者產生的通知訊息。類似 E_NOTICE, 但是是使用者自己在程式碼中使用PHP函數 trigger_error()來產生的。 since PHP 4
2048 ##E_STRICT# (integer)
E_RECOVERABLE_ERROR(integer) E_ERROR# 從而腳本終止執行。
8192 E_DEPRECATED(integer) since PHP 5.3.0
E_USER_DEPRECATED#(integer) E_DEPRECATED, 但是是使用者自己在程式碼中使用PHP函數 trigger_error()來產生的。
30719 E_ALL ## (integer) E_STRICT#出外的所有錯誤和警告訊息。

以上是php報錯等級有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:c與php有差嗎下一篇:c與php有差嗎