【问题标题】:Laravel - Nginx 404 page on production on every exceptionLaravel - 每个异常的 Nginx 404 生产页面
【发布时间】:2021-12-24 03:18:19
【问题描述】:

我不知道为什么在我的登台服务器中一直显示 Nginx 404 Not Found 哪里有崩溃

在本地,我可以看得很清楚

即使显示 404 not found,我也可以去 Laravel 中的日志文件

/storage/logs/laravel-*.log

我可以看到崩溃堆栈跟踪...我试过了

APP_DEBUG=true 和 APP_DEBUG=false 显示相同的结果

我忘了做什么?

【问题讨论】:

  • 在.env 文件中更改APP_DEBUG 后,您是否清除了缓存的配置?
  • 这是你的服务器中的一个配置,让应用程序处理错误页面,你会在服务器故障时有更好的响应
  • 另外,在docs中有一个如何配置nginx的例子
  • 你说你清除了缓存,但是你也清除了配置缓存吗? php artisan config:clear
  • APP_ENV的值是多少?

标签: laravel nginx laravel-5 logging laravel-5.8


【解决方案1】:

你的 nginx 或 vhost 配置中有类似的东西吗?

error_page  404              /404.html;
error_page  500              /500.html;

如果是这样,你需要注释掉这一行。

这告诉 nginx 在 HTTP 404 或 500 错误时提供自定义静态 HTML 文件。所以错误不是由 PHP 和 Laravel 呈现的,所以没有漂亮的错误。尽管如此,错误是由 PHP 引发的,因此您可以在日志中看到它。

如果你有这样的事情,请尝试评论它,重新启动 nginx,然后再试一次。我想我记得曾经遇到过完全相同的问题,这为我解决了问题。

请注意,您可以为其他 HTTP 代码设置类似的其他规则。

【讨论】:

    【解决方案2】:

    我相信 Nginx 404 错误只会在 nginx(或任何 http 服务器)找不到页面(php 页面)时引发。

    通常php框架不允许http服务器访问每个文件和目录。

    他们自己用路由器处理路由。

    如果 router 不能匹配任何路由,它会渲染 laravel 的 404 页面

    nginx 借助 Url Rewrite

    将所有 url 传递给路由器

    Url Rewrite 可以在 apache 中使用 apache configs 或 .htaccess 文件处理,但在 Nginx 的情况下,

    如果 Laravel 出现任何错误:

    • 会出现错误或异常
    • Laravel 异常处理程序捕获对象。
    • 它将呈现视图(堆栈跟踪)视图

    检查

    所以我认为我们必须检查这些容易出错的地方:

    1. Nginx 网址重写配置
    2. 检查.env 有APP_URL=[correct value] & APP_DEBUG=true & APP_ENVIOURMNT=staging 然后php artisan config:clear
    3. 检查App\Exceptions\Handler 中是否重定向到一个不存在的页面(在 laravel 应用程序之外):
      • 也许有些东西重定向到 localhost 并且在您的本地还可以,但在暂存时您有另一个域。

    其中,我更怀疑第一个选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 2018-02-12
      • 2021-06-22
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多