php - Zend 框架中的 register_shutdown_function

标签 php zend-framework error-handling

我试图捕捉 Zend Framework 应用程序中发生的 fatal error 。我试图从 Bootstrap 中调用 register_shutdown_function:

protected function _initErrorHandler()
{
    register_shutdown_function(array("My_ErrorHandler", 'shutdownHandler'));
}

然后,在 My_ErrorHandler 中,我编写了一个函数:
<?php
class My_ErrorHandler
{
    static function shutdownHandler()
    {
        die('here');
    }
}

这行不通。我对 set_error_handler 进行了同样的尝试,它可以工作。但是,最后一个函数无法捕获 fatal error 。

你是我想念的吗?

谢谢

最佳答案

我设法使它工作。

事实上,它是有效的,但这不是很“友好”。 die('here') 被击中,但在浏览器中显示 fatal error 之后。

所以我发现了 fatal error ,然后重定向到标准 Zend Framework 错误 Controller ,结果如下:

<?php
class My_ErrorHandler
{
    /** 
     * Catch all errors within the Applications
     * @see Bootstrap
     */ 
    static function shutdownHandler()
    {
        $e = error_get_last();
        if (!is_null($e) && $e['type'] == E_ERROR) { //fatal error

            //log
            Zend_Registry::get('log')->err($e['message']);

            //Redirect to error page
            $redirector = new Zend_Controller_Action_Helper_Redirector();
            $redirector->gotoSimple('error', 'error', null, array('error_handler' => 'fatal'));
        }
    }
}

希望它会帮助别人;)

感谢@Jon、@Richard Parnaby-King 和@ficuscr 的帮助。

注意:尽量保持shutdownHandler() 尽可能轻:它被称为每个页面显示。

关于php - Zend 框架中的 register_shutdown_function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12051643/

相关文章:

php - 如何使用 jquery ajaxify zend_pagination 结果(已经使用 partialoop)

php - 如果无法连接到服务器,将用户定向到静态页面?

python - 时钟类错误处理的最佳方法?

php - Laravel 捕获 TokenMismatchException

php - 使用 imagecopyresampled() PHP GD 圆角透明_平滑_角

php - 从 PHP 调用 MongoDB 中存储的 JavaScript 函数

java - Android 不会显示 PHP 页面的特殊字符

php - 从 SQLite 切换时 Zend Framework : Authentication, MySQL 错误

php - Zend 和 Smarty 3 集成使用

php - 如何在连接类中使用 PDO 时显示 mysql 错误?