自搭兰空图床却显示500|502服务器错误?

自搭兰空图床却显示500|502服务器错误?
ZhEYuAN一、问题描述
如下图
我参考如下教程进行的搭建
在正式安装的第一步,我出现了如上错误
自检急速版:
①确定php拓展是否完全安装
②确定自己的php版本没有过高导致依赖项不匹配
(这里推荐php8.1版本)
以上两个确定后基本没有问题,如果仍然出错,可以看我下面的排查思路进行判断
二、排查错误
浏览器500的错误是个很笼统的错误,并不具体指向某一原因。
在这个项目中,可能是如下错误导致的
- 配置错误(如 Nginx 或 PHP 配置)或代码错误(如PHP代码)
- 文件和目录权限问题
- 服务器资源不足
这里并不涉及数据库的问题,因为此时我们并没有链接数据库
三、检查nginx和php是否正常运行
1 | systemctl status php8.3-fpm |
这里php的版本号改成你自己的
正常运行的话输出如下图
nginx:
php
由于浏览器是兰空图床的前段报错,所以查看兰空图床的错误日志
查看lsky的日志
查看兰空图床的日志
1 | cd /var/www/html/storage/logs |
兰空图床的日志显示
从错误日志中可以看出,主要问题是由 Carbon\Carbon::setLastErrors()
方法引起的。具体原因
是该方法接收到的参数不符合预期类型:需要的是 array
类型,但实际上提供的是 false
。
这类问题通常是由于时区配置或依赖版本引起的。
尝试更改配置文件中的时区
检查php配置文件中的时区
1 | cd /etc/php/8.3/fpm/ |
在vim编辑器的命令模式(即按Esc),输入
1 | /date.timezone |
然后按 Enter
,光标会跳转到匹配的行。
将这个值改为
保存并退出
重启php服务
1 | systemctl restart php8.3-fpm |
查看lsky配置文件中的时区
打开 config/app.php
文件:
1 | vim /var/www/html/config/app.php |
查找以下部分,确保时区设置正确:
1 | 'timezone' => 'Asia/Shanghai', |
编辑 config/session.php
文件:
1 | vim /var/www/html/config/session.php |
检查以下配置:
1 | 'lifetime' => 120, |
清理配置缓存:
1 | bash复制编辑php artisan config:clear |
检查版本依赖
更新Composer
1 | composer update nesbot/carbon |
发现报错
这些通知是 PHP 版本与现有代码兼容性的问题。主要是:
Return type
问题- 使用了
strlen(null)
等不推荐的方法
方法一:升级项目依赖composer(不推荐)
升级后的composer依然不支持8.3版本的php,所以我进行了php的重装
方法二:重装8.1版本的php(lsky要求php版本必须>=8.0.2)
- 删除php(一定要确定自己的其他项目是否依赖php)
1 | sudo systemctl stop php-fpm |
- 重装php8.1
添加 PHP 官方 PPA 仓库
1 | sudo apt-get update |
安装 PHP 8.1-FPM
1 | sudo apt-get install -y php8.1-fpm |
验证安装是否成功
1 | php -v |
启动并启用 PHP-FPM 服务
1 | sudo systemctl start php8.1-fpm |
检查 PHP-FPM 是否运行中
1 | sudo systemctl status php8.1-fpm |
- 按照官方文档安装所有的php依赖项
- 完成其他php配置
我的lsky报错成功从500变成了502,至少解决了一些问题
从报错页面可知,是nginx的报错,于是查看nginx的错误日志
查看nginx的错误日志
1 | cd /var/log/nginx/ |
这里可以看到,Nginx 当前配置中指向了 PHP 8.3 的 php-fpm,需要调整 Nginx 配置,使其使用 PHP 8.1 的 FPM 服务
调整nginx配置使其指向php8.1
- 查看PHP 8.1-FPM 是否启动
1 | sudo systemctl status php8.1-fpm |
- 更改nginx的配置,将8.3改为8.1
1 | sudo vim /etc/nginx/sites-available/default |
- 测试nginx配置是否正确
1 | sudo nginx -t |
- 重启nginx
1 | sudo systemctl restart nginx |
再次检查lsky是否运行
成功!
如果以上的思路以及方案仍没有帮助到你,可以通过以下方面进行排查
其他方面排查
一、查看文件权限是否有误
Web 服务器(如 Nginx 或 Apache)可能无法访图床文件所在的文件或目录,导致错误。
将下面的路径改成自己的图床文件路径
1 | sudo chown -R www-data:www-data /var/www/html |
二、服务器资源不足
查看内存使用
1 | free -h |
作者留言:细心的师傅们可能发现了,错误日志的时间显示横跨两天,没错我排查了两天T^T,如果这篇文章帮助到您,可以留个小心心~Thanks♪(・ω・)ノ