您好,登錄后才能下訂單哦!
本篇內容介紹了“php報錯有什么級別”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
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會根據程序的錯誤級別來給出給出不同的提示。例如什么警告,錯誤等錯誤,但是這些錯誤是可以設置的,如果只是一些小的錯誤,我們可以讓這些錯誤不報出來。
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) | 啟用 PHP 對代碼的修改建議,以確保代碼具有最佳的互操作性和向前兼容性。 | since PHP 5 |
4096 | E_RECOVERABLE_ERROR (integer) | 可被捕捉的致命錯誤。 它表示發生了一個可能非常危險的錯誤,但是還沒有導致PHP引擎處于不穩定的狀態。 如果該錯誤沒有被用戶自定義句柄捕獲,將成為一個 E_ERROR 從而腳本會終止運行。 | since PHP 5.2.0 |
8192 | E_DEPRECATED (integer) | 運行時通知。啟用后將會對在未來版本中可能無法正常工作的代碼給出警告。 | since PHP 5.3.0 |
16384 | E_USER_DEPRECATED (integer) | 用戶產少的警告信息。 類似 E_DEPRECATED , 但是是由用戶自己在代碼中使用PHP函數 trigger_error()來產生的。 | since PHP 5.3.0 |
30719 | E_ALL (integer) | E_STRICT 出外的所有錯誤和警告信息。 | 30719 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個
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('error_reporting', 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報錯有什么級別”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。