萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> PHP自動捕捉頁面500錯誤示例

PHP自動捕捉頁面500錯誤示例

   通常程序發生致命錯誤的時候頁面空白,想獲取錯誤信息也不難!主要是利用兩個函數:

  error_get_last() 獲取最後一次發生錯誤信息:結構如下:

 代碼如下  


Array
(
    [type] => 8
    [message] => Undefined variable: http://www.111cn.net
    [file] => C:WWWindex.php
    [line] => 2
)

  register_shutdown_function()在腳本停止執行時注冊一個回調函數

  有了這兩個函數就可以監控致命錯誤了:

 代碼如下  

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");

  順序附本地服務器測試方法

  下面來說說顯示PHP錯誤提示消息的三個方法。

  一:php.ini配置

  php.ini配置中與此相關的有兩個配置變量。下面是這兩個變量及其默認值:

 代碼如下  

display_errors = Off
error_reporting = E_ALL & ~E_NOTICE

  display_errors 變量的目的很明顯 —— 它告訴PHP是否顯示錯誤。默認值是 Off。現在我們的目的是顯示錯誤提示,那麼:

 代碼如下  

display_errors = On

  E_ALL,這個設置會顯示從不良編碼實踐到無害提示到出錯的所有信息。E_ALL 對於開發過程來說有點太細,因為它連變量未初始化也顯示提示,而這一點正是PHP“高級”的一個特征。幸好,error_reporting的默認值是“E_ALL & ~E_NOTICE”,這樣就只看到錯誤和不良編碼了,對程序無不利的提示則不會顯示。

  修改php.ini後需要重新啟動Apache,這樣才可以在apache中生效,當然你如果只在命令行下測試程序,是不需要這一步的。

  配置php程序中

 代碼如下  

<?php
//禁用錯誤報告
error_reporting(0);
//報告運行時錯誤
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//報告所有錯誤
error_reporting(E_ALL); 
?>

copyright © 萬盛學電腦網 all rights reserved