我目前正在使用Zend Framework 1.在bootstrap中我会有
受保护的函数_initLogger() {
//this is where I create log to file
}
问题是当日志文件被写保护或发出错误时,错误将显示给具有目录位置的浏览器等。
我不想压制邮件,但如何自定义此错误,以免显示太多信息
我的application.ini
phpSettings.display_startup_errors = 1 phpSettings.display_errors = 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);
}
}
现在,当您手动处理错误和异常时,您可以向用户显示一条简单的消息(通过呈现视图)并将技术详细信息发送给管理员。
希望这有帮助。