設定錯誤訊息回報的等級。
語法:int error_reporting(int [level]);
傳回值:整數
函式種類:
php系統功能
內容說明
本函式用來設定錯誤訊息回報的等級,引數 level 是乙個整數的位元遮罩 (bitmask),見下表。
value
constant
1e_error
2e_warning
4e_parse
8e_notice
16e_core_error
32e_core_warning
64e_compile_error
128e_compile_warning
256e_user_error
512e_user_warning
1024
e_user_notice
2047
e_all
2048
e_strict
php 的錯誤報告
php.ini 檔案中有許多配置設定。您應當已經設定好自己的 php.ini 檔案並把它放在合適的目錄中,就像在 linux 上安裝 php 和 apache 2 的文件說明中所示的那樣(請參閱
參考資料
)。在除錯 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 onphp_value error_reporting 2039
這會覆蓋在 php.ini 檔案中為 display_errors 已經設定的標誌,以及 error_reporting 的值。值 2039 代表 e_all & ~e_notice。如果願意採用 e_all,請把值設為 2047。同樣,還是要重啟 apache。
接下來,要在伺服器上測試錯誤報告。
PHP錯誤報告
級別常量 錯誤值錯誤報告描述 e error 致命的執行時錯誤 阻止指令碼執行 e warning 執行時警告 非致命性錯誤 e parse 從語法中解析錯誤 e notice 執行時注意訊息 可能是或可能不是乙個問題 e core error php啟動時初始化過程中的致命錯誤 e core wa...
PHP 設定錯誤報告
總結 php能夠在執行時動態設定是否顯示錯誤 顯示的錯誤級別。例子 不輸出錯誤報告 error reporting 0 輸出給定級別的錯誤 error reporting e error e warning e parse e notice 輸出除了e notice的他所有錯誤 error repo...
PHP錯誤報告級別
error reporting e all e notice 錯誤報告級別是位字段的疊加,推薦使用 e all e strict 1 e error 致命的執行時錯誤 2 e warning 執行時警告 非致命性錯誤 4 e parse 編譯時解析錯誤 8 e notice 執行時提醒 經常是 bu...