溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php怎么屏蔽錯誤提示

發(fā)布時間:2021-07-16 11:43:10 來源:億速云 閱讀:113 作者:chen 欄目:編程語言

本篇內(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 中的錯誤類型如下表所示:

常量說明
1E_ERROR致命的運(yùn)行時錯誤,一般是不可恢復(fù)的情況,例如內(nèi)存分配導(dǎo)致的問題,后果是導(dǎo)致腳本終止、不再繼續(xù)運(yùn)行。
2E_WARNING運(yùn)行時警告(非致命錯誤),僅給出提示信息,但是腳本不會終止運(yùn)行。
4E_PARSE編譯時語法解析錯誤,僅由分析器產(chǎn)生。
8E_NOTICE運(yùn)行時通知,表示腳本遇到可能會表現(xiàn)為錯誤的情況,但是在可以正常運(yùn)行的腳本里面也可能會有類似的通知。
16E_CORE_ERROR在 PHP 初始化啟動過程中發(fā)生的致命錯誤,類似 E_ERROR,但是是由 PHP 引擎核心產(chǎn)生的。
32E_CORE_WARNINGPHP 初始化啟動過程中發(fā)生的警告(非致命錯誤),類似 E_WARNING ,但是是由 PHP 引擎核心產(chǎn)生的。
64E_COMPILE_ERROR致命編譯時錯誤,類似 E_ERROR,但是是由 Zend 腳本引擎產(chǎn)生的。
128E_COMPILE_WARNING編譯時警告(非致命錯誤),類似 E_WARNING,但是是由 Zend 腳本引擎產(chǎn)生的。
256E_USER_ERROR用戶產(chǎn)生的錯誤信息,類似 E_ERROR,但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error() 來產(chǎn)生的。
512E_USER_WARNING用戶產(chǎn)生的警告信息,類似 E_WARNING,但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error() 來產(chǎn)生的。
1024E_USER_NOTICE用戶產(chǎn)生的通知信息,類似 E_NOTICE,但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error() 來產(chǎn)生的。
1024E_STRICT啟用 PHP 對代碼的修改建議,以確保代碼具有最佳的互操作性和向前兼容性。
2048E_RECOVERABLE_ERROR可被捕捉的致命錯誤,表示發(fā)生了一個可能非常危險的錯誤,但是還沒有導(dǎo)致 PHP 引擎處于不穩(wěn)定的狀態(tài)。如果該錯誤沒有被用戶自定義句柄捕獲,將成為一個 E_ERROR,從而使腳本終止運(yùn)行。
8192E_DEPRECATED運(yùn)行時通知,啟用后將會對在未來版本中可能無法正常工作的代碼給出警告。
16384E_USER_DEPRECATED用戶產(chǎn)生的警告信息,類似 E_DEPRECATED,但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error() 來產(chǎn)生的。
30719E_ALLE_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ì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(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)容。

php
AI