您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“php怎么屏蔽錯誤提示”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
方法:1、使用錯誤控制運(yùn)算符“@”,將其放置在一個PHP表達(dá)式前,則可能產(chǎn)生的錯誤信息都將被忽略掉。2、使用error_reporting()函數(shù);3、在“php.ini”文件中,將“display_errors”項的值設(shè)置為“Off”。
本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦
PHP 有 3 種屏蔽錯誤的方法:
使用錯誤控制運(yùn)算符:@
使用 error_reporting() 函數(shù)屏蔽錯誤
通過 display_errors 參數(shù)屏蔽錯誤
1、使用錯誤控制運(yùn)算符:@
PHP 支持使用錯誤控制運(yùn)算符@
。將其放置在一個 PHP 表達(dá)式之前,該表達(dá)式可能產(chǎn)生的任何錯誤信息都將被忽略掉。
如果用 set_error_handler() 設(shè)定了自定義的錯誤處理函數(shù),這個錯誤處理函數(shù)仍然會被調(diào)用,而如果在出錯語句前使用了@
的話,錯誤處理函數(shù)將返回 0。
需要注意的是,@
運(yùn)算符只對表達(dá)式有效。簡單來說就是,如果能從某處得到值,就能在它前面加上 @
運(yùn)算符。例如可以在變量、函數(shù)、include 調(diào)用、常量等等之前使用 @
運(yùn)算符,但不能把它放在函數(shù)或類的定義之前,也不能用于條件結(jié)構(gòu)例如 if 和 foreach 等語句前。
@
運(yùn)算符對于可以導(dǎo)致程序終止的嚴(yán)重錯誤也是有效的,這意味著如果在某個不存在或者敲錯了字母的函數(shù)調(diào)用前用了@來抑制錯誤信息,那么程序?qū)]有任何提示的死在那里。
【示例】使用 @
錯誤控制運(yùn)算符屏蔽代碼中的錯誤。
<?php $link = @mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die('數(shù)據(jù)庫連接失?。?#39;); ?>
運(yùn)行結(jié)果如下:
數(shù)據(jù)庫連接失??!
2、使用 error_reporting()
函數(shù)屏蔽錯誤
PHP 有諸多錯誤級別,使用 error_reporting() 函數(shù)可以設(shè)置 PHP 會報告何種錯誤,函數(shù)的語法格式如下:
error_reporting([int $level])
其中參數(shù) $level 為設(shè)置錯誤級別,如果將 $level 設(shè)置為 0,將關(guān)閉所有 PHP 錯誤報告;如果設(shè)置為 -1,將返回所有的錯誤報告。
PHP 中的錯誤類型如下表所示:
值 | 常量 | 說明 |
---|---|---|
1 | E_ERROR | 致命的運(yùn)行時錯誤,一般是不可恢復(fù)的情況,例如內(nèi)存分配導(dǎo)致的問題,后果是導(dǎo)致腳本終止、不再繼續(xù)運(yùn)行。 |
2 | E_WARNING | 運(yùn)行時警告(非致命錯誤),僅給出提示信息,但是腳本不會終止運(yùn)行。 |
4 | E_PARSE | 編譯時語法解析錯誤,僅由分析器產(chǎn)生。 |
8 | E_NOTICE | 運(yùn)行時通知,表示腳本遇到可能會表現(xiàn)為錯誤的情況,但是在可以正常運(yùn)行的腳本里面也可能會有類似的通知。 |
16 | E_CORE_ERROR | 在 PHP 初始化啟動過程中發(fā)生的致命錯誤,類似 E_ERROR,但是是由 PHP 引擎核心產(chǎn)生的。 |
32 | E_CORE_WARNING | PHP 初始化啟動過程中發(fā)生的警告(非致命錯誤),類似 E_WARNING ,但是是由 PHP 引擎核心產(chǎn)生的。 |
64 | E_COMPILE_ERROR | 致命編譯時錯誤,類似 E_ERROR,但是是由 Zend 腳本引擎產(chǎn)生的。 |
128 | E_COMPILE_WARNING | 編譯時警告(非致命錯誤),類似 E_WARNING,但是是由 Zend 腳本引擎產(chǎn)生的。 |
256 | E_USER_ERROR | 用戶產(chǎn)生的錯誤信息,類似 E_ERROR,但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error() 來產(chǎn)生的。 |
512 | E_USER_WARNING | 用戶產(chǎn)生的警告信息,類似 E_WARNING,但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error() 來產(chǎn)生的。 |
1024 | E_USER_NOTICE | 用戶產(chǎn)生的通知信息,類似 E_NOTICE,但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error() 來產(chǎn)生的。 |
1024 | E_STRICT | 啟用 PHP 對代碼的修改建議,以確保代碼具有最佳的互操作性和向前兼容性。 |
2048 | E_RECOVERABLE_ERROR | 可被捕捉的致命錯誤,表示發(fā)生了一個可能非常危險的錯誤,但是還沒有導(dǎo)致 PHP 引擎處于不穩(wěn)定的狀態(tài)。如果該錯誤沒有被用戶自定義句柄捕獲,將成為一個 E_ERROR,從而使腳本終止運(yùn)行。 |
8192 | E_DEPRECATED | 運(yùn)行時通知,啟用后將會對在未來版本中可能無法正常工作的代碼給出警告。 |
16384 | E_USER_DEPRECATED | 用戶產(chǎn)生的警告信息,類似 E_DEPRECATED,但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error() 來產(chǎn)生的。 |
30719 | E_ALL | E_STRICT 除外的所有錯誤和警告信息。 |
【示例】使用 error_reporting() 函數(shù)屏蔽代碼中的錯誤。
<?php error_reporting(0); $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die('數(shù)據(jù)庫連接失??!'); ?>
3、通過 display_errors
參數(shù)屏蔽錯誤
這種方法應(yīng)該是最徹底的一種解決辦法,因為前兩種方法只能作用于單行或者單個文件,而這個則是作用于所有的 PHP 文件。
具體的操作方法就是,打開 php.ini 配置文件,在其中搜索 display_errors,然后將 display_errors 的值設(shè)置為 Off 即可關(guān)閉所有的 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怎么屏蔽錯誤提示”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。