PHP自動貼齊頁面500錯誤樣本

來源:互聯網
上載者:User

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.