新的 Laravel 8 安装 500 服务器错误,没有 Laravel 日志或 Apache 日志

Jem*_*Jem 5 php apache laravel laravel-8

这几天我一直在为这个问题揪心。

我有一个 Laravel Web 应用程序,我正在尝试将其部署到我的网络服务器。我几周前开始制作该应用程序,并从最新稳定版本的全新 Laravel 安装开始。

当我第一次尝试通过 Composer 安装 Laravel 时,它告诉我我的 PHP 版本已经过时。我需要 7.3 或更高版本并安装了 7.2。我继续按照本指南安装 php 7.4。

起初,我在 Apache 中收到默认的 503 服务不可用错误,我能够将其确定为另一个域虚拟主机上的 ProxyPass 错误。当我检查 Apache 错误日志时,这已显示在其中。

现在,我只是禁用了该网站,因为它已经有一段时间没有使用了。

这样做后,我现在得到一个样式为“500 | 服务器错误”的屏幕,它与 Laravel 默认错误代码屏幕相匹配。但是,storage/logs/laravel.log当我去检查时没有新的错误。如果我尝试运行 artisan 命令,因为php artisan migrate日志确实将这些错误的输出正确写入文件。所以根本无法写入日志并不是权限错误。

就目前情况而言,我已经在我的网络服务器上安装了以下内容。

  • 拉拉维尔 8.12
  • PHP 7.4.13(命令行)
  • 阿帕奇2.4.29

到目前为止我已经尝试过...

  • 文件.env已成功创建并具有正确的权限。(确实如此)
  • 调试已启用(确实如此)
  • 正如我在此服务器上安装的其他 Laravel 所做的那样,我确保文件权限设置正确。(他们是)
  • 我检查了我的虚拟主机文件(附在下面),它是我的其他 Laravel 站点虚拟主机之一的副本,其中相关信息已更改。我在此服务器上托管的其他 Laravel 站点(另外 2 个项目)运行正常。
  • 我确保Laravel 所需的所有 php 模块均已安装且是最新的。(据我所知)
  • 手动将调试设置为trueinconfig/app.php并重新加载配置缓存php artisan config:cache

域虚拟主机文件:

<VirtualHost *:80>
    ServerAdmin myemail@gmail.com
    ServerName workworkwork.fitness
    ServerAlias workworkwork.fitness
    DocumentRoot /var/www/html/workout/public
    <Directory /var/www/html/workout/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =workworkwork.fitness
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Run Code Online (Sandbox Code Playgroud)

如果有人对如何调试此错误有任何想法,我们将不胜感激。与部署网站或设置新域一样,我以前也遇到过问题,但通常 Stack Overflow 或其他网站都可以轻松通过 Google 解决问题。然而,我还没有在这个网站上找到适合我的。如果没有 Apache 或 Laravel 错误报告,就很难知道从哪里开始。

Jem*_*Jem 2

这个问题不久前就得到了解决,我不记得确切的步骤(抱歉我没有记得早点更新这个问题),但我确实有一些东西供将来可能偶然发现这个问题的人检查。

我所学到的知识可能会帮助其他遇到类似问题的人。

  • 最重要的注意事项:如果您的服务器上运行着CertbotLet's Encrypt。检查他们的错误日志。它有自己的日志,可以深入了解请求的处理方式。通常它们位于/var/log/letsencrypt/. 我应该在我最初的帖子中提到这一点。当我执行了下面的一些其他步骤来消除可能的问题后,我更新了我的证书,并将它们从 HTTP 重定向到 HTTPS,这解决了问题。RewriteRule ^我相信这与一个域配置错误、拼写错误有关。该域也已ProxyPass启用。我认为在这个拼写错误和 CerBot 自动生成的证书之间。有什么地方坏了。一旦确定、纠正并重新颁发证书,问题就解决了。
  • Apache 按字母顺序处理虚拟主机。就我而言,遇到问题的域按字母顺序排列最低。就我的日志而言,我注意到尝试到达该域的流量正在通过另一个域进行路由。这让我开始研究该域的虚拟主机及其配置方式。还要注意,这并没有被指示为错误,它的行为就好像应该根据某些虚拟主机配置来执行此操作。基本上,并非所有错误都是错误。其中的一些事情让 Apache 认为它工作正常,但 Laravel 却将自己的应用程序状态错误显示为 500。
  • 禁用所有未使用或立即需要的虚拟主机。就我而言,我有一些旧的虚拟主机仍在运行,用于测试域、废弃的副项目等。消除过程效果很好。慢慢地排除可能导致问题的因素,直到问题解决为止,然后您就可以更好地了解是什么阻碍了问题的解决。当然,您会希望将其中的许多内容恢复到在线状态,否则并不总是可以选择将其离线。对于许多人来说是最后的手段,但仍然对我有帮助。