2017-03-28 73 views
1

我設置了一個set_exception_handler和一個set_error_handler來正確處理異常和錯誤,但仍然沒有發現'致命錯誤'。捕捉致命錯誤時如何不顯示錯誤堆棧

我嘗試這樣做:

register_shutdown_function("fatal_handler"); 

function fatal_handler() 
{ 
    FlashMessages::flashIt('message', 'Fatal error'); 
    include(Settings::ABSPATH . '/src/views/message.php'); 

    $error = error_get_last(); 

    if ($error !== null) { 
     $errno = $error[ "type" ]; 
     $errfile = $error[ "file" ]; 
     $errline = $error[ "line" ]; 
     $errstr = $error[ "message" ]; 

     var_dump($error); 
    } 
} 

,我確實能夠傾錯誤,但也沒有辦法避免頁面頂部的完整的堆棧錯誤。 我怎樣才能避免顯示錯誤堆棧?

enter image description here

+2

不要轉儲吧!或者讓我們說:刪除開發代碼。將第一行移入if語句中的行,並檢查'$ error [「type」] == 1'以僅捕獲關閉函數中的致命錯誤。 – JustOnUnderMillions

回答

2
register_shutdown_function("fatal_handler"); 

function fatal_handler() 
{ 
    $error = error_get_last(); 
    if ($error[ "type" ] == 1) { //only fatal errors 
    $errno = $error[ "type" ]; 
    $errfile = $error[ "file" ]; 
    $errline = $error[ "line" ]; 
    $errstr = $error[ "message" ]; 

    FlashMessages::flashIt("'$errstr' in $errfile in line $errline ", 'Fatal error'); 
    include(Settings::ABSPATH . '/src/views/message.php'); 
    } 
} 

而且不顯示在生產錯誤的PHP輸出。

ini_set('display_errors', 0); 
ini_set('display_startup_errors', 0); 

How do I get PHP errors to display?

Turn Off Display Error PHP.ini