【发布时间】:2021-03-30 19:39:16
【问题描述】:
这几天我一直在拔头发。
我有一个 Laravel 网络应用程序,我正在尝试将它部署到我的网络服务器。几周前我开始制作该应用程序,并开始使用最新稳定版本的全新 Laravel 安装。
当我第一次尝试通过 composer 安装 Laravel 时,它告诉我我的 PHP 版本已经过时了。我需要 7.3 或更高版本并安装了 7.2。我继续关注this guide on installing php 7.4.
起初,我在 Apache 中收到一个默认的 503 服务不可用错误,我可以将其归结为另一个域虚拟主机上的 ProxyPass 错误。当我检查它们时,它显示在 Apache 错误日志中。
目前,我只是简单地禁用了该网站,因为它已经有一段时间没有使用了。
这样做后,我现在会得到一个与 Laravel 默认错误代码屏幕匹配的样式“500 | 服务器错误”屏幕。但是,当我去检查它时,storage/logs/laravel.log 没有新的错误。如果我尝试以php artisan migrate 身份运行工匠命令,则日志确实将这些错误的输出正确地写入文件。所以根本不能写日志不是权限错误。
就目前而言,我已经在我的网络服务器上安装了以下内容。
- Laravel 8.12
- PHP 7.4.13 (cli)
- Apache 2.4.29
到目前为止,我已经尝试过...
-
.env文件已成功创建并具有正确的权限。 (确实如此) - 调试已启用(已启用)
- 正如我在此服务器上安装的其他 Laravel 所做的那样 I made sure the file permissions are correctly set.(它们是)
- 我检查了我的虚拟主机文件(附在下面),它是我的其他 Laravel 站点虚拟主机之一的副本,相关信息已更改。我在此服务器上托管的其他 Laravel 站点(其他 2 个项目)运行正常。
- 我确保所有php modules required by Laravel are installed 都是最新的。 (据我所知)
- 在
config/app.php中手动将调试设置为true并使用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>
如果有人对如何调试此错误有任何想法,我们将不胜感激。与部署站点或设置新域一样,我之前遇到过问题,但通常 Stack Overflow 或其他站点都可以轻松地通过 Google 解决。但是,我还没有在这个网站上找到适合我的。如果没有 Apache 或 Laravel 错误报告,甚至很难知道从哪里开始。
【问题讨论】:
-
一般来说,对于任何 500 错误,都必须有一个日志条目。尝试清除
storage/logs/laravel.log并刷新页面,然后检查日志文件中是否有任何条目。还要检查日志文件夹中是否有任何其他日志文件可能是日期明智的。如果您删除最后三行虚拟主机配置,即允许标准 laravel 应用程序附带的.htaccess文件处理漂亮的 url 内容,错误是否仍然存在? -
@Donkarnash 这是删除重写条件的一个好点,我不太习惯编写虚拟主机,所以不可否认,这是从大量阅读中拼凑而成的。删除它们不会改变行为。仍然是 500 错误。我清除了日志文件。没有什么新鲜事要报告。如果我通过我知道会出错的终端输入一个工匠命令,那些仍然会写入文件。所以我无法弄清楚这些丢失在哪里。
-
通过在
./public/index.php文件的开头设置phpinfo();exit;来确认虚拟主机被正确指向并且运行良好。这也会告诉你 Apache 的 PHP 是否使用 PHP 7.4 -
php artisan config:cache? -
临时定义一个新的 '/' 路由在其他两个项目之一中成功运行在同一服务器上作为闭包和
return phpinfo()来自闭包。然后访问'/'路由,看看为apache配置了哪个php版本。
标签: php laravel apache laravel-8