我将我的应用程序从Laravel 5.4升级到5.5。现在,当我输入错误的URL时,没有向我显示未找到异常的调试页面,而是向我显示了一个漂亮的404页面,上面写着“抱歉,找不到您要查找的页面”。这与在APP_DEBUG=false
文件中具有.env
的生产环境中运行应用程序时的情况类似。但是在这里,我在本地环境中设置了APP_DEBUG=true
和APP_ENV=local
。
可能出什么问题了?
答案 0 :(得分:1)
Laravel 5.5现在包括各种HTTP状态代码(包括404)的错误页面。如果没有任何自定义错误页面,则使用这些错误页面。
如果您检查laravel\framework\src\Illuminate\Foundation\Exceptions\views
文件夹,则会看到这些错误页面。而这些在v5.4中是不存在的。
您可以选中official documentation来自定义404页面。
当Laravel抛出NotFoundHttpException
异常时,它由App\Exceptions\Handler
类中的render方法处理。然后根据异常情况,在此处准备响应。对于这个特殊的异常,Laravel使用404错误视图文件准备响应。
例如,如果您删除vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\views\404.blade.php
文件,您将得到whoops显示的异常和堆栈跟踪。前提是您也没有resources\views\errors\404.blade.php
文件。
因此,如果您想捕获NotFoundHttpException
异常,可以通过render
类中的App\Exceptions\Handler
方法执行此操作:
if ($exception instanceof NotFoundHttpException) {
throw $exception;
} else {
return parent::render($request, $exception);
}
答案 1 :(得分:0)
Laravel在其IOC容器上进行了一些缓存,因此请确保清除配置缓存:
php artisan config:clear
为了运行它
php artisan view:clear
然后最终通过以下方式设置新的配置缓存:
php artisan cache:config
可以在bootstrap/cache/config.php
答案 2 :(得分:0)
仅是为了帮助该功能中的某人。.升级后,我也没有专门遇到此问题。
我的环境设置为本地,而应用程序调试设置为true,但仍然像我在生产中看到的那样向我显示“ 500错误模板”。我喜欢用堆栈跟踪而不是“ whoops”错误,因为我在本地环境中。
这里提出的所有可能的解决方案以及其他论坛都没有帮助我,除了以下我不小心做的事情。
以隐身模式转到相同的网址并登录该应用,它向我显示了带有堆栈跟踪的错误页面。
因此,我尝试通过清除浏览器缓存并在同一隐身窗口中重新加载URL来再次复制该问题,这一次它显示了500个错误模板。
答案 3 :(得分:-1)
在 laravel 5.5 中,您必须检查 APP_DEBUG,APP_LOG_LEVEL,APP_ENV
您的 .env 文件中的内容应类似于
APP_DEBUG=true
APP_LOG_LEVEL=debug
和您的config \ app.php如下
'env' => env('APP_ENV', 'development'),
'debug' => env('APP_DEBUG', true),