捕获致命错误时如何不显示错误堆栈

时间:2017-03-28 12:54:19

标签: php

我设置了一个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

1 个答案:

答案 0 :(得分: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