在程序調(diào)試時如果在本地我們出現(xiàn)500錯誤可以直接打開php.ini的錯誤來看到哪里錯了,但在服務(wù)器中我們是不能這樣做的,這樣很容易讓人感覺網(wǎng)站不正規(guī)的同時也可能給其它人看到你網(wǎng)站W(wǎng)EB路徑及相關(guān)安全數(shù)據(jù)了,那要如何處理500錯誤呢,下面我們一看一個方法。
通常程序發(fā)生致命錯誤的時候頁面空白,想獲取錯誤信息也不難!主要是利用兩個函數(shù):error_get_last() 獲取最后一次發(fā)生錯誤信息:結(jié)構(gòu)如下:
- Array
- (
- [type] => 8
- [message] => Undefined variable: http://m.survivalescaperooms.com
- [file] => C:WWWindex.php
- [line] => 2
- )
register_shutdown_function()在腳本停止執(zhí)行時注冊一個回調(diào)函數(shù),有了這兩個函數(shù)就可以監(jiān)控致命錯誤了,代碼如下:
- error_reporting(E_ALL); //E_ALL
- function cache_shutdown_error() {
- $_error = error_get_last();
- if ($_error && in_array($_error['type'], array(1, 4, 16, 64, 256, 4096, E_ALL))) {
- echo '<font color=red>你的代碼出錯了:</font></br>';
- echo '致命錯誤:' . $_error['message'] . '</br>';
- echo '文件:' . $_error['file'] . '</br>';
- echo '在第' . $_error['line'] . '行</br>';
- }
- }
- register_shutdown_function("cache_shutdown_error");
順序附本地服務(wù)器測試方法,下面來說說顯示PHP錯誤提示消息的三個方法。
一:php.ini配置
php.ini配置中與此相關(guān)的有兩個配置變量,下面是這兩個變量及其默認(rèn)值,代碼如下:
display_errors = Off
error_reporting = E_ALL & ~E_NOTICE
display_errors 變量的目的很明顯 -- 它告訴PHP是否顯示錯誤,默認(rèn)值是 Off,現(xiàn)在我們的目的是顯示錯誤提示,那么:display_errors = On
E_ALL,這個設(shè)置會顯示從不良編碼實踐到無害提示到出錯的所有信息,E_ALL 對于開發(fā)過程來說有點太細(xì),因為它連變量未初始化也顯示提示,而這一點正是PHP“高級”的一個特征,幸好,error_reporting的默認(rèn)值是“E_ALL & ~E_NOTICE”,這樣就只看到錯誤和不良編碼了,對程序無不利的提示則不會顯示。
修改php.ini后需要重新啟動Apache,這樣才可以在apache中生效,當(dāng)然你如果只在命令行下測試程序,是不需要這一步的。
配置php程序中,代碼如下:
- <?php
- //禁用錯誤報告
- error_reporting(0);
- //報告運行時錯誤
- error_reporting(E_ERROR | E_WARNING | E_PARSE);
- //報告所有錯誤
- error_reporting(E_ALL);
- ?>
新聞熱點
疑難解答