【发布时间】:2014-04-11 16:15:06
【问题描述】:
跟进未回答的问题 Custom ExceptionListener picks up 403 & 404, but not 500 errors 和 Symfony 2.4: Why are 500 errors not caught by kernel.exception listener。
我已经实现了一个自定义异常侦听器,它可以出色地处理 403 和 404 错误,但不能捕获 500 错误。我收到的一些反馈表明,在 Symfony 有机会运行之前发生了大约 500 个错误,因此无法被任何侦听器捕获。
我注意到的是,无论我生成什么类型的奇怪错误,无论是语法错误、未定义变量、未知方法、对非对象的方法调用等,似乎 ErrorHandler- >handle() 或 ErrorHandler->handleFatalError() 总是在开发环境中被调用(参见下面的一些示例)(虽然在开发环境中并非如此,我经常在 Symfony 中得到一个正常的 PHP 错误)。
我想要做的是,每当在生产环境中发生这样的错误时,我总是会显示一个用户友好的(糟糕,出了点问题)错误页面,并且总是发送一封包含错误细节的电子邮件。在我看来,如果我可以自定义 ErrorHandler->handle(),那么我将能够完成此任务。原因很简单,我想知道我的系统在生产中发生的任何错误。有人会认为这是一个比较常见的功能,但我做不到。
我仍在学习 Symfony,尽管我已经实现了自定义控制台命令、自定义身份验证处理程序以及更多复杂的安全功能,但我确实在为此苦苦挣扎。如果有丰富的 Symfony 经验的人能告诉我这是否可能,我将非常感激,如果可以,我将如何去做。
【问题讨论】:
标签: php symfony error-handling