【问题标题】:Laravel: debug screen is not showing after upgraded from 5.4 to 5.5Laravel:从 5.4 升级到 5.5 后不显示调试屏幕
【发布时间】:2018-06-26 14:44:20
【问题描述】:

我将我的应用从 Laravel 5.4 升级到了 5.5。现在,当我输入错误的 URL 时,它并没有显示未找到异常的调试页面,而是显示了一个漂亮的 404 页面,其中显示“抱歉,找不到您要查找的页面”。这类似于在 APP_DEBUG=false 文件中包含 APP_DEBUG=false 的生产环境上运行应用程序时的情况。但是在这里我在本地环境中设置了APP_DEBUG=trueAPP_ENV=local

问题可能出在哪里?

【问题讨论】:

  • 检查你的 app/exceptions\handler.php,看看你有什么设置,
  • 您是在运行artisan serve 来测试它还是由专用 HTTP 服务器(nginx、Apache 等)提供服务?我问是因为如果您使用serve 命令,.env 变量在运行命令时仅加载一次,您需要重新运行命令以获取 .env 更改。
  • @pseudoanime 没有人将他们的设置存储在App\Exceptions\Handler 类中。设置存储在config/app.php.env 文件中。
  • @Bogdan 不,我使用 Laravel Valet。
  • 做一个php artisan config:clear和一个view:clear

标签: php laravel debugging


【解决方案1】:

Laravel 在它的 IOC 容器上做了一些缓存,所以一定要清除配置缓存:

php artisan config:clear

只是为了它运行

php artisan view:clear

然后最后设置你的新配置缓存:

php artisan cache:config

文件本身可以在bootstrap/cache/config.php中找到

【讨论】:

  • 在 laravel 5.8 中我得到:` 命令“cache:config”未定义。你的意思是其中之一吗?缓存:清除缓存:忘记缓存:表`
【解决方案2】:

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\Exception‌​s\views\404.blade‌​.ph‌​p 文件,您将获得由 whoops 显示的异常和堆栈跟踪。前提是你也没有resources\views\errors\404.blade.php 文件。

因此,如果您想捕获 NotFoundHttpException 异常,您可以通过 App\Exceptions\Handler 类中的 render 方法执行此操作:

if ($exception instanceof NotFoundHttpException) {
    throw $exception;
} else {
    return parent::render($request, $exception);
} 

【讨论】:

  • 但它与自定义 HTTP 错误页面无关。
  • 当 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 文件。
  • 当我将debug 设置为true 时,我无法看到调试页面(哎呀页面)。我只看到一个友好的错误页面(vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\views\404.blade.php 以防 404 错误,而其他页面则以防其他错误)。我希望你现在明白我的问题了。
  • 澄清一下,如果你删除了 404 刀片文件,你会得到糟糕的页面吗?
【解决方案3】:

只是为了帮助该功能的某个人。我也遇到过这个问题,但不是在升级后专门遇到的。

我的环境设置为本地,应用程序调试设置为 true,但它仍然向我显示“500 错误模板”,就像我们在生产中看到的那样。我喜欢看到堆栈跟踪的“哎呀”错误,而不是那个,因为我在本地环境中。

这里和其他论坛建议的所有可能的解决方案都没有帮助我,除了我不小心做了以下事情。

在隐身模式下转到相同的 url 并登录到应用程序,它向我显示了带有堆栈跟踪的错误页面。

所以我尝试通过清除浏览器缓存并在同一个隐身窗口中重新加载 url 来再次复制该问题,这次它向我显示了 500 错误模板。

【讨论】:

    【解决方案4】:

    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),
    

    【讨论】:

    • 日志配置(loglog_level)与此问题无关。这些功能在 Laravel 5.4 中也可用(在 5.2 中添加)。正如我之前写的,我已经有APP_DEBUG=true
    猜你喜欢
    • 2018-06-17
    • 2018-04-11
    • 1970-01-01
    • 2018-09-16
    • 2015-02-09
    • 2018-04-23
    • 1970-01-01
    • 2018-07-02
    • 2016-09-15
    相关资源
    最近更新 更多