溫馨提示×

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

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

php如何修改錯(cuò)誤級(jí)別

發(fā)布時(shí)間:2021-06-03 09:56:30 來(lái)源:億速云 閱讀:115 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了php如何修改錯(cuò)誤級(jí)別,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

在php中,可以使用error_reporting()函數(shù)來(lái)修改錯(cuò)誤級(jí)別,該函數(shù)可以規(guī)定報(bào)告哪個(gè)錯(cuò)誤,語(yǔ)法格式“error_reporting(level)”;參數(shù)level規(guī)定當(dāng)前腳本的錯(cuò)誤報(bào)告級(jí)別,值數(shù)字和常量名都能接受。

本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦

在php.ini中可以設(shè)置服務(wù)器對(duì)錯(cuò)誤的報(bào)警級(jí)別。在默認(rèn)情況下,php將報(bào)告除了通知之外的所有錯(cuò)誤。

錯(cuò)誤報(bào)告級(jí)別是通過(guò)一些預(yù)定義的常量來(lái)設(shè)置的,

語(yǔ)法

int error_reporting ( [int level] )

如果參數(shù) level 未指定,當(dāng)前報(bào)錯(cuò)級(jí)別將被返回。下面幾項(xiàng)是 level 可能的值:

如下表所示:

1        E_ERROR        報(bào)告運(yùn)行時(shí)的致命錯(cuò)誤
2        E_WARNING        報(bào)告運(yùn)行的非致命錯(cuò)誤

4        E_PARSE        報(bào)告解析錯(cuò)誤
8        E_NOTICE        報(bào)告通告,注意,表示所做的事情可能是錯(cuò)誤的.
16           E_CORE_ERROR        報(bào)告PHP引擎啟動(dòng)失敗
32           E_CORE_WARNING    報(bào)告PHP引擎啟動(dòng)時(shí)非致命錯(cuò)誤

64           E_COMPILE_ERROR    報(bào)告編譯錯(cuò)誤
128         E_COMPILE_WARNING    報(bào)告編譯時(shí)出現(xiàn)的非致命錯(cuò)誤

256         E_USER_ERROR        報(bào)告用戶觸發(fā)的錯(cuò)誤
512         E_USER_WARNING    報(bào)告用戶觸發(fā)的警告

1024          E_USER_NOTICE        報(bào)告用戶觸發(fā)的通告
2047       E_ALL            報(bào)告所有的錯(cuò)誤和警告
2048       E_STRICT        報(bào)告不贊成的用法和不推薦的行為

在php.ini文件中,默認(rèn)的報(bào)告是除了通知之外的所有錯(cuò)誤,如下語(yǔ)句設(shè)定:

error_reporting = E_ALL & ~ (E_NOTICE)

在上面的表達(dá)式中,符號(hào)"&"表示幾個(gè)條件這間的并列,而"~"表示否定,即NOT的含義.

如果想忽略警告信息,可以設(shè)定如下語(yǔ)句:

   error_reporting = E_ALL & ~(E_NOTICE) & ~(E_WARNING)

在php.ini文件中,和錯(cuò)誤有關(guān)的設(shè)置有如下幾個(gè):

(1)error_reporting,設(shè)定錯(cuò)誤級(jí)別

(2)display_errors,是否顯示錯(cuò)誤報(bào)告,設(shè)置為ON則打開,設(shè)置為OFF則關(guān)閉所有錯(cuò)誤提示

(3)log_errors,默認(rèn)設(shè)置為OFF,是否記錄錯(cuò)誤日志;

(4)track_errors,默認(rèn)設(shè)置為OFF,該選項(xiàng)可以幫助解決代碼中的錯(cuò)誤,而不是讓PHP提供其默認(rèn)的功能。

網(wǎng)上搜集:

E_NOTICE 表示一般情形不記錄,只有程式有錯(cuò)誤情形時(shí)才用到,例如企圖存取一個(gè)不存在的變數(shù),或是呼叫 stat() 函式檢視不存在的檔案。

E_WARNING 通常都會(huì)顯示出來(lái),但不會(huì)中斷程式的執(zhí)行。這對(duì)除錯(cuò)很有效。例如:用有問(wèn)題的常規(guī)表示法呼叫 ereg()。
E_ERROR 通常會(huì)顯示出來(lái),亦會(huì)中斷程式執(zhí)行。意即用這個(gè)遮罩無(wú)法追查到記憶體配置或其它的錯(cuò)誤。
E_PARSE 從語(yǔ)法中剖析錯(cuò)誤。
E_CORE_ERROR 類似 E_ERROR,但不包括 PHP 核心造成的錯(cuò)誤。
E_CORE_WARNING 類似 E_WARNING,但不包括 PHP 核心錯(cuò)誤警告。

PHP 的錯(cuò)誤報(bào)告

php.ini 文件中有許多配置設(shè)置。您應(yīng)當(dāng)已經(jīng)設(shè)置好自己的 php.ini 文件并把它放在合適的目錄中,就像在 Linux 上安裝 PHP 和 Apache 2 的文檔說(shuō)明中所示的那樣。在調(diào)試 PHP 應(yīng)用程序時(shí),應(yīng)當(dāng)知道兩個(gè)配置變量。下面是這兩個(gè)變量及其默認(rèn)值:

display_errors = Off
error_reporting = E_ALL

通過(guò)在 php.ini 文件中搜索它們,可以發(fā)現(xiàn)這兩個(gè)變量當(dāng)前的默認(rèn)值。display_errors 變量的目的很明顯 —— 它告訴 PHP 是否顯示錯(cuò)誤。默認(rèn)值是 Off。但是,要讓開發(fā)過(guò)程更加輕松,請(qǐng)把這個(gè)值設(shè)為 On:

display_errors = On

error_reporting 變量的默認(rèn)值是 E_ALL。這個(gè)設(shè)置會(huì)顯示從不良編碼實(shí)踐到無(wú)害提示到出錯(cuò)的所有信息。E_ALL 對(duì)于開發(fā)過(guò)程來(lái)說(shuō)有點(diǎn)太細(xì),因?yàn)樗谄聊簧蠟橐恍┬∈拢ɡ缱兞课闯跏蓟┮诧@示提示,會(huì)搞糟瀏覽器的輸出。我只想看到錯(cuò)誤和不良編碼實(shí)踐,但是不想看到 無(wú)害的提示。所以,請(qǐng)用以下值代替 error_reporting 的默認(rèn)值:

error_reporting = E_ALL & ~E_NOTICE

重新啟動(dòng) Apache,就全部設(shè)置好了。接下來(lái),將學(xué)習(xí)如何在 Apache 上做同樣的事。

服務(wù)器上的錯(cuò)誤報(bào)告

依賴于 Apache 正在做的工作,在 PHP 中打開錯(cuò)誤報(bào)告可能沒(méi)法工作,因?yàn)樵谟?jì)算機(jī)上可能有多個(gè) PHP 版本。有時(shí)很難區(qū)分

Apache 正在使用哪個(gè) PHP 版本,因?yàn)?Apache 只能查看一個(gè) php.ini 文件。不知道 Apache 正在使用哪個(gè) php.ini 文件配置自己是一個(gè)安全問(wèn)題。但是,有一種方法可以在 Apache 中配置 PHP 變量,從而保證設(shè)置了正確的出錯(cuò)級(jí)別。

而且,最好知道如何在服務(wù)器端設(shè)置這些配置變量,以否決或搶占 php.ini 文件,從而提供更高級(jí)別的安全性。

在配置 Apache 時(shí),應(yīng)該已經(jīng)接觸過(guò) <apache2-install-dir>/conf/httpd.conf 中 http.conf 文件中的基本配置。

要做在 php.ini 文件中已經(jīng)做過(guò)的事,請(qǐng)把下列各行添加到 httpd.conf,覆蓋任何 php.ini 文件:

php_flag   display_errors         on
php_value error_reporting       2039

這會(huì)覆蓋在 php.ini 文件中為 display_errors 已經(jīng)設(shè)置的標(biāo)志,以及 error_reporting 的值。值 2039 代表 E_ALL & ~E_NOTICE。如果愿意采用 E_ALL,請(qǐng)把值設(shè)為 2047。同樣,還是要重啟 Apache。

接下來(lái),要在服務(wù)器上測(cè)試錯(cuò)誤報(bào)告。

關(guān)于error_reporting()這個(gè)函數(shù),它是可以屏蔽到一些錯(cuò)誤信息,但是PHP 核心造成的錯(cuò)誤,是無(wú)法屏蔽的,因?yàn)镻HP 核心造成的錯(cuò)誤會(huì)直接導(dǎo)致PHP文件編譯失敗,因?yàn)闀鴮懜袷經(jīng)]有按照PHP的編碼規(guī)則寫而造成的錯(cuò)誤,是無(wú)法屏蔽的

常見(jiàn)的如下:

 // Turn off all error reporting;關(guān)閉所有的錯(cuò)誤
error_reporting(0);
// Report simple running errors;報(bào)告一個(gè)簡(jiǎn)單的運(yùn)行錯(cuò)誤
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings …);包括報(bào)告一些未初始化的變量或捕捉變量名的拼寫錯(cuò)誤
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Report all errors except E_NOTICE
// This is the default value set in php.ini;報(bào)告所有的錯(cuò)誤但不包括E_NOTICE
error_reporting(E_ALL ^ E_NOTICE);
// Report all PHP errors (bitwise 63 may be used in PHP 3);報(bào)告所有的錯(cuò)誤
error_reporting(E_ALL);
// Same as error_reporting(E_ALL);同上
ini_set(’error_reporting’, E_ALL);

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“php如何修改錯(cuò)誤級(jí)別”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

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

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI