问题摘要
我无法让 Laravel 使用 Response::error('500') 呈现 500 个默认错误页面 (views/error/500.php)。
重现代码(为本示例简化)
创建一个虚拟控制器并添加以下公共方法:
public function action_index()
{
try
{
throw new Exception;
}
catch(Exception $e)
{
Response::error('500');
}
}
运行此路由时,请注意您将收到一个空白页,并且标题状态为 200,而不是 500。
预期结果
我希望在views/error/500.php 中呈现默认的500 错误页面,并停止执行其余脚本(假设脚本较长)。
实际结果
标题状态为 200 的空白白页被发送到浏览器。
我的环境
- Laravel 3.2.12
- 共享主机上的 PHP 5.3.13
- Windows 7的
- Chrome 23(在其他各种浏览器上的结果相同)
更多信息
还有什么我可以提供的,让这个问题更容易理解或排除故障。Laravel 论坛 (http://forums.laravel.io/viewtopic.php?id=2191) 上出现了一个类似的(相同的?)问题,不久前它被声明为已修复。
在 application/routes.php 我有 500 错误处理程序的以下代码:
Event::listen('500', function()
{
return Response::error('500');
});
您可以在 GitHub 上的https://github.com/laravel/laravel/blob/master/laravel/response.php中查看 Response 对象的源代码。