[英]Change “Whoops, looks like something went wrong.” message
我确定我在这里错过了一些愚蠢的东西。 我正在尝试替换Laravel在出现异常时抛出的非调试错误屏幕。 它似乎忽略了下面的代码(放在start/global.php
):
App::error(function(Exception $exception, $code)
{
Log::error($exception);
if(!Config::get('app.debug')) {
return Response::view('errors.exception', ['message' => $exception->getMessage()], 500);
}
});
为什么会忽略这一点? 我本来应该在其他地方做些什么吗?
我正在使用QueryException
( HY000
)测试它。 但这肯定不会有所作为?
使用Laravel 4.2
没有看到你的系统就很难说,但是我的第一个猜测就是对App:error
的另一个调用App:error
在你的App:error
之后发生的App:error
会覆盖你在app/global.php
尝试做的事情。
我刚刚写了关于Laravel 最近如何设置它的错误处理的文章 。 阅读完那篇文章(或者跳过它并潜入)之后,我调试这个的方式就是跳进去
vendor/laravel/framework/src/Illuminate/Exception/Handler.php
并查看callCustomHandlers
的定义。 这是通过App:error
调用任何处理程序设置的方法
protected function callCustomHandlers($exception, $fromConsole = false)
{
foreach ($this->handlers as $handler)
{
//...
}
}
您的处理程序将位于$this->handlers
数组中。 我将为此类添加一些临时调试代码(该类可能在Laravel的单个组合优化文件中)来确定
如果你的处理程序失败了handlesException
测试
如果在“获胜”并发送响应之后有另一个处理程序添加到队列中。
从一开始也不会伤害
App::error(function()
{
exit(__FILE__);
});
然后构建你的错误处理程序,直到它被停止被调用。 那样你就知道Laravel有什么问题了。
在app/global.php
有一个默认的错误处理程序设置。 您将要删除它以使用您的,或只是修改那个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.