首頁  >  文章  >  後端開發  >  php設定錯誤級別

php設定錯誤級別

王林
王林原創
2019-09-26 17:40:155867瀏覽

php設定錯誤級別

php錯誤等級設定

在php.ini中可以設定伺服器對錯誤的警報等級。在預設情況下,php將報告除了通知之外的所有錯誤。錯誤報告等級是透過一些預先定義的常數來設定的,

語法:

int error_reporting ( [int level] )

如果參數level 未指定,當前報錯等級將會被傳回。以下幾項是level 可能的值:

php設定錯誤級別

#在php.ini檔案中,預設的報告是除了通知之外的所有錯誤,如下語句設定:

error_reporting = E_ALL & ~ (E_NOTICE)

在上面的表達式中,符號"&"表示幾個條件這間的並列,而"~"表示否定,即NOT的意思。如果想要忽略警告訊息,可以設定如下語句:

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

在php.ini檔案中,和錯誤有關的設定有以下幾個:

(1)error_reporting,設定錯誤等級

(2)display_errors,是否顯示錯誤報告,設定為ON則開啟,設定為OFF則關閉所有錯誤提示

(3)log_errors ,預設為OFF,是否記錄錯誤日誌;

(4)track_errors,預設為OFF,該選項可以幫助解決程式碼中的錯誤,而不是讓PHP提供其預設的功能。

PHP的錯誤報告
php.ini 檔案中有許多設定設定。您應該已經設定好自己的php.ini檔案並把它放在適當的目錄中,就像在Linux上安裝PHP和Apache2的文件說明中所示的那樣。在偵錯 PHP 應用程式時,應知道兩個配置變數。以下是這兩個變數及其預設值:

display_errors = Off
error_reporting = E_ALL

透過在 php.ini 檔案中搜尋它們,可以發現這兩個變數目前的預設值。 display_errors 變數的目的很明顯 —— 它告訴 PHP 是否顯示錯誤。預設值是 Off。但是,要讓開發過程更輕鬆,請把這個值設為 On:

display_errors = On

error_reporting變數的預設值是 E_ALL。這個設定會顯示從不良編碼實踐到無害提示到出錯的所有資訊。 E_ALL 對於開發過程來說有點太細,因為它在螢幕上也會為一些小事(例如變數未初始化)顯示提示,會搞糟瀏覽器的輸出。我只想看到錯誤和不良編碼實踐,但是不想看到 無害的提示。所以,請用以下值取代 error_reporting 的預設值:

error_reporting = E_ALL & ~E_NOTICE

重新啟動 Apache,就全部設定好了。接下來,將學習如何在 Apache 上做同樣的事情。

伺服器上的錯誤報告

依賴Apache 正在做的工作,在PHP 中開啟錯誤報告可能沒辦法工作,因為電腦上可能有多個PHP 版本。有時很難區分 Apache正在使用哪個 PHP 版本,因為 Apache 只能查看一個 php.ini 檔案。不知道 Apache 正在使用哪個 php.ini 檔案配置自己是一個安全性問題。但是,有一種方法可以在 Apache 中配置 PHP 變量,從而保證設定了正確的出錯等級。而且,最好知道如何在伺服器端設定這些配置變量,以否決或搶佔 php.ini 文件,從而提供更高層級的安全性。

在設定 Apache 時,應該已經接觸過 /conf/httpd.conf 中 http.conf 檔案中的基本設定。要做在php.ini 檔案中已經做過的事,請把下列各行加入到httpd.conf,覆蓋任何php.ini 檔案:

php_flag   display_errors         on
php_value error_reporting       2039

這會覆蓋在php.ini 檔案中為display_errors 已經設定的標誌,以及error_reporting 的值。值 2039 代表 E_ALL & ~E_NOTICE。如果願意採用 E_ALL,請把數值設為 2047。同樣,還是要重啟 Apache。

接下來,要在伺服器上測試錯誤報告。

關於error_reporting()這個函數,它是可以屏蔽到一些錯誤訊息,但是PHP 核心造成的錯誤,是無法屏蔽的,因為PHP 核心造成的錯誤會直接導致PHP文件編譯失敗,因為書寫格式沒有依照PHP的編碼規則寫而造成的錯誤,是無法屏蔽的。

常見的如下:

// Turn off all error reporting;关闭所有的错误
error_reporting(0);
// Report simple running errors;报告一个简单的运行错误
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings …);包括报告一些未初始化的变量或捕捉变量名的拼写错误
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;报告所有的错误但不包括E_NOTICE
error_reporting(E_ALL ^ E_NOTICE);
// Report all PHP errors (bitwise 63 may be used in PHP 3);报告所有的错误
error_reporting(E_ALL);
// Same as error_reporting(E_ALL);同上
ini_set(’error_reporting’, E_ALL);

推薦教學:PHP影片教學

#

以上是php設定錯誤級別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn