您好,登錄后才能下訂單哦!
本篇內容介紹了“php怎么屏蔽錯誤提示”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
方法:1、使用錯誤控制運算符“@”,將其放置在一個PHP表達式前,則可能產生的錯誤信息都將被忽略掉。2、使用error_reporting()函數;3、在“php.ini”文件中,將“display_errors”項的值設置為“Off”。
本教程操作環境:windows7系統、PHP7.1版,DELL G3電腦
PHP 有 3 種屏蔽錯誤的方法:
使用錯誤控制運算符:@
使用 error_reporting() 函數屏蔽錯誤
通過 display_errors 參數屏蔽錯誤
1、使用錯誤控制運算符:@
PHP 支持使用錯誤控制運算符@
。將其放置在一個 PHP 表達式之前,該表達式可能產生的任何錯誤信息都將被忽略掉。
如果用 set_error_handler() 設定了自定義的錯誤處理函數,這個錯誤處理函數仍然會被調用,而如果在出錯語句前使用了@
的話,錯誤處理函數將返回 0。
需要注意的是,@
運算符只對表達式有效。簡單來說就是,如果能從某處得到值,就能在它前面加上 @
運算符。例如可以在變量、函數、include 調用、常量等等之前使用 @
運算符,但不能把它放在函數或類的定義之前,也不能用于條件結構例如 if 和 foreach 等語句前。
@
運算符對于可以導致程序終止的嚴重錯誤也是有效的,這意味著如果在某個不存在或者敲錯了字母的函數調用前用了@來抑制錯誤信息,那么程序將沒有任何提示的死在那里。
【示例】使用 @
錯誤控制運算符屏蔽代碼中的錯誤。
<?php $link = @mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die('數據庫連接失敗!'); ?>
運行結果如下:
數據庫連接失敗!
2、使用 error_reporting()
函數屏蔽錯誤
PHP 有諸多錯誤級別,使用 error_reporting() 函數可以設置 PHP 會報告何種錯誤,函數的語法格式如下:
error_reporting([int $level])
其中參數 $level 為設置錯誤級別,如果將 $level 設置為 0,將關閉所有 PHP 錯誤報告;如果設置為 -1,將返回所有的錯誤報告。
PHP 中的錯誤類型如下表所示:
值 | 常量 | 說明 |
---|---|---|
1 | E_ERROR | 致命的運行時錯誤,一般是不可恢復的情況,例如內存分配導致的問題,后果是導致腳本終止、不再繼續運行。 |
2 | E_WARNING | 運行時警告(非致命錯誤),僅給出提示信息,但是腳本不會終止運行。 |
4 | E_PARSE | 編譯時語法解析錯誤,僅由分析器產生。 |
8 | E_NOTICE | 運行時通知,表示腳本遇到可能會表現為錯誤的情況,但是在可以正常運行的腳本里面也可能會有類似的通知。 |
16 | E_CORE_ERROR | 在 PHP 初始化啟動過程中發生的致命錯誤,類似 E_ERROR,但是是由 PHP 引擎核心產生的。 |
32 | E_CORE_WARNING | PHP 初始化啟動過程中發生的警告(非致命錯誤),類似 E_WARNING ,但是是由 PHP 引擎核心產生的。 |
64 | E_COMPILE_ERROR | 致命編譯時錯誤,類似 E_ERROR,但是是由 Zend 腳本引擎產生的。 |
128 | E_COMPILE_WARNING | 編譯時警告(非致命錯誤),類似 E_WARNING,但是是由 Zend 腳本引擎產生的。 |
256 | E_USER_ERROR | 用戶產生的錯誤信息,類似 E_ERROR,但是是由用戶自己在代碼中使用 PHP 函數 trigger_error() 來產生的。 |
512 | E_USER_WARNING | 用戶產生的警告信息,類似 E_WARNING,但是是由用戶自己在代碼中使用 PHP 函數 trigger_error() 來產生的。 |
1024 | E_USER_NOTICE | 用戶產生的通知信息,類似 E_NOTICE,但是是由用戶自己在代碼中使用 PHP 函數 trigger_error() 來產生的。 |
1024 | E_STRICT | 啟用 PHP 對代碼的修改建議,以確保代碼具有最佳的互操作性和向前兼容性。 |
2048 | E_RECOVERABLE_ERROR | 可被捕捉的致命錯誤,表示發生了一個可能非常危險的錯誤,但是還沒有導致 PHP 引擎處于不穩定的狀態。如果該錯誤沒有被用戶自定義句柄捕獲,將成為一個 E_ERROR,從而使腳本終止運行。 |
8192 | E_DEPRECATED | 運行時通知,啟用后將會對在未來版本中可能無法正常工作的代碼給出警告。 |
16384 | E_USER_DEPRECATED | 用戶產生的警告信息,類似 E_DEPRECATED,但是是由用戶自己在代碼中使用 PHP 函數 trigger_error() 來產生的。 |
30719 | E_ALL | E_STRICT 除外的所有錯誤和警告信息。 |
【示例】使用 error_reporting() 函數屏蔽代碼中的錯誤。
<?php error_reporting(0); $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die('數據庫連接失敗!'); ?>
3、通過 display_errors
參數屏蔽錯誤
這種方法應該是最徹底的一種解決辦法,因為前兩種方法只能作用于單行或者單個文件,而這個則是作用于所有的 PHP 文件。
具體的操作方法就是,打開 php.ini 配置文件,在其中搜索 display_errors,然后將 display_errors 的值設置為 Off 即可關閉所有的 PHP 錯誤報告。如下所示:
; This directive controls whether or not and where PHP will output errors, ; notices and warnings too. Error output is very useful during development, but ; it could be very dangerous in production environments. Depending on the code ; which is triggering the error, sensitive information could potentially leak ; out of your application such as database usernames and passwords or worse. ; For production environments, we recommend logging errors rather than ; sending them to STDOUT. ; Possible Values: ; Off = Do not display any errors ; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) ; On or stdout = Display errors to STDOUT ; Default Value: On ; Development Value: On ; Production Value: Off ; http://php.net/display-errors display_errors = Off
“php怎么屏蔽錯誤提示”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。