程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP自動捕捉頁面500錯誤示例

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

編輯:關於PHP編程

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

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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved