当引导抛出异常时,Zend Framework显示自定义错误

时间:2014-05-02 22:06:38

标签: php zend-framework error-handling bootstrapping

我目前正在使用Zend Framework 1.在bootstrap中我会有

  

受保护的函数_initLogger()      {

     
  //this is where I create log to file
         

}

  

问题是当日志文件被写保护或发出错误时,错误将显示给具有目录位置的浏览器等。

我不想压制邮件,但如何自定义此错误,以免显示太多信息

我的application.ini

  

phpSettings.display_startup_errors = 1   phpSettings.display_errors = 1

1 个答案:

答案 0 :(得分:1)

试试这个。

告诉Zend Framework不处理异常。在您的application.ini

中执行此操作
resources.frontController.throwExceptions = 1

在Bootstrap课程中执行以下操作。

定义处理例外的自定义方法。

public function __handleExceptions(Exception $e){
        //render a view with a simple error message for the user
        //and send an email with the error to admin
    }

覆盖Bootstrap类中_bootstrap()的{​​{1}}和run()方法,并捕获在引导过程中或运行应用程序时抛出的异常,并调用异常处理程序,如下所示。

Zend_Application_Bootstrap_Bootstrap

这应该处理所有异常。对于处理错误,请注册您自己的错误处理程序,如下所示。

    protected function _bootstrap($resource = null)
    {
        try {
            parent::_bootstrap($resource);
        } catch(Exception $e) {
            $this->__handleExecptions($e);
        }
    }

    public function run()
    {
        try {
            parent::run();
        } catch(Exception $e) {
            $this->__handleExecptions($e);
        }
    }

现在,当您手动处理错误和异常时,您可以向用户显示一条简单的消息(通过呈现视图)并将技术详细信息发送给管理员。

希望这有帮助。