php.ini報錯設置的方法:首先找到并打開php.ini配置文件;然后設置內(nèi)容為“error_reporting=E_ALL display_errors=On”即可。
本文操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦
PHP 開啟錯誤顯示并設置錯誤報告級別
警告:生產(chǎn)環(huán)境永遠都不要顯示任何錯誤信息!
顯示錯誤(display_errors)和錯誤報告(error_reporting)是兩回事。PHP 腳本發(fā)生錯誤時,可以根據(jù)設置選擇是否報告這個錯誤(記錄到錯誤日志中),如果設置中開啟了 display_errors,則同時把錯誤信息打印到屏幕上。
項目中常用的設置
switch (ENVIRONMENT) { // 對于開發(fā)環(huán)境,報告所有錯誤,同時顯示到屏幕上 case 'development': error_reporting(-1); ini_set('display_errors', 1); break; // 對于測試和生產(chǎn)環(huán)境,不顯示錯誤,5.3 以上的版本,不報告通知、廢棄方法、嚴格這幾類錯誤 case 'testing': case 'production': ini_set('display_errors', 0); if (version_compare(PHP_VERSION, '5.3', '>=')) { error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED); } else { error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE); } break; default: header('HTTP/1.1 503 Service Unavailable.', TRUE, 503); echo 'The application environment is not set correctly.'; exit(1); // EXIT_ERROR }
PHP 預定義的錯誤常量
官網(wǎng)定義了所有的 錯誤常量,常用的有:
- E_STRICT (integer) PHP 對代碼的修改建議,以確保代碼具有最佳的互操作性和向前兼容性。
- E_ALL (integer) E_STRICT外的所有錯誤和警告信息。
- E_ERROR (integer) 致命的運行時錯誤。這類錯誤一般是不可恢復的情況,例如內(nèi)存分配導致的問題。后果是導致腳本終止不再繼續(xù)運行。
- E_WARNING (integer) 運行時警告 (非致命錯誤)。僅給出提示信息,但是腳本不會終止運行。
- E_PARSE (integer) 編譯時語法解析錯誤。解析錯誤僅僅由分析器產(chǎn)生。
- E_NOTICE (integer) 運行時通知。表示腳本遇到可能會表現(xiàn)為錯誤的情況,但是在可以正常運行的腳本里面也可能會有類似的通知。
在代碼中開啟并設置顯示級別
ini_set() 函數(shù)
對于 PHP,可以通過 php.ini
文件設置各種指令。但有時候需要在腳本運行時設置指令,那就需要 ini_set()
函數(shù)了。
string ini_set ( string $varname , string $newvalue )
設置指定配置選項的值。這個選項會在腳本運行時保持新的值,并在腳本結(jié)束時恢復。
例如:
ini_set('error_reporting', E_ALL); ini_set('display_errors', 'on');
error_reporting() 函數(shù)
error_reporting()
函數(shù)能夠在運行時設置 error_reporting 指令。 PHP 有諸多錯誤級別,使用該函數(shù)可以設置在腳本運行時的級別。如果沒有設置可選參數(shù), error_reporting() 會返回當前的錯誤報告級別。
PHP7.2 的默認值為 E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
。
在開發(fā)階段建議啟用 E_NOTICE 顯示