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

一、问题描述

如下图

img

我参考如下教程进行的搭建

兰空图床(Lsky Pro)安装教程(无宝塔+LNMP)

在正式安装的第一步,我出现了如上错误

image-20250126140504868

自检急速版:

①确定php拓展是否完全安装

1

②确定自己的php版本没有过高导致依赖项不匹配

(这里推荐php8.1版本)

以上两个确定后基本没有问题,如果仍然出错,可以看我下面的排查思路进行判断

二、排查错误

浏览器500的错误是个很笼统的错误,并不具体指向某一原因。

在这个项目中,可能是如下错误导致的

  1. 配置错误(如 Nginx 或 PHP 配置)或代码错误(如PHP代码)
  2. 文件和目录权限问题
  3. 服务器资源不足

这里并不涉及数据库的问题,因为此时我们并没有链接数据库

三、检查nginx和php是否正常运行

1
2
systemctl status php8.3-fpm
systemctl status nginx

这里php的版本号改成你自己的

正常运行的话输出如下图

nginx:

9ed79430-4b0c-4e0e-9846-f27e855baab4

php

82886259-aa1f-4582-811f-e349474e65aa

由于浏览器是兰空图床的前段报错,所以查看兰空图床的错误日志

查看lsky的日志

查看兰空图床的日志

1
2
cd /var/www/html/storage/logs
vim laravel.log

兰空图床的日志显示

从错误日志中可以看出,主要问题是由 Carbon\Carbon::setLastErrors() 方法引起的。具体原因

是该方法接收到的参数不符合预期类型:需要的是 array 类型,但实际上提供的是 false

这类问题通常是由于时区配置依赖版本引起的。

尝试更改配置文件中的时区

检查php配置文件中的时区

1
2
cd /etc/php/8.3/fpm/
vim php.ini

在vim编辑器的命令模式(即按Esc),输入

1
/date.timezone

然后按 Enter,光标会跳转到匹配的行。

d3e749d4-74f1-4f57-9d10-0e8f89abda7e

将这个值改为

08f780e3-3c4c-4a3d-a351-aa374cc0be13

保存并退出

重启php服务

1
systemctl restart php8.3-fpm

查看lsky配置文件中的时区

打开 config/app.php 文件:

1
vim /var/www/html/config/app.php

查找以下部分,确保时区设置正确:

1
'timezone' => 'Asia/Shanghai',

5b8cc550-129f-438f-b5ff-5a887b2c9f8d

db39e7a9-b9ef-4586-902e-e314c1da83e5

编辑 config/session.php 文件:

1
vim /var/www/html/config/session.php

检查以下配置:

1
2
'lifetime' => 120, 
'expire_on_close' => false,

清理配置缓存:

1
2
bash复制编辑php artisan config:clear
php artisan cache:clear

检查版本依赖

更新Composer

1
composer update nesbot/carbon

发现报错

image-20250126212811968

这些通知是 PHP 版本与现有代码兼容性的问题。主要是:

  • Return type 问题
  • 使用了 strlen(null) 等不推荐的方法

方法一:升级项目依赖composer(不推荐)

​ 升级后的composer依然不支持8.3版本的php,所以我进行了php的重装

方法二:重装8.1版本的php(lsky要求php版本必须>=8.0.2)

  • 删除php(一定要确定自己的其他项目是否依赖php)
1
2
3
4
5
6
7
8
9
10
11
12
sudo systemctl stop php-fpm
sudo systemctl disable php-fpm

rpm -qa | grep php

sudo yum remove php-fpm -y

# 可选:清理所有 PHP 相关的包
sudo yum remove php* -y

# 可选:删除配置文件和残留数据
sudo rm -rf /etc/php* /var/lib/php /var/log/php*
  • 重装php8.1

添加 PHP 官方 PPA 仓库

1
2
3
4
sudo apt-get update
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

安装 PHP 8.1-FPM

1
sudo apt-get install -y php8.1-fpm

验证安装是否成功

1
php -v

启动并启用 PHP-FPM 服务

1
2
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

检查 PHP-FPM 是否运行中

1
sudo systemctl status php8.1-fpm
  • 按照官方文档安装所有的php依赖项
  • 完成其他php配置

参考教程

我的lsky报错成功从500变成了502,至少解决了一些问题

4b34adb6-8b07-4dc8-a7f5-7113932d680b

从报错页面可知,是nginx的报错,于是查看nginx的错误日志

查看nginx的错误日志

1
2
cd /var/log/nginx/
vim error.log

image-20250127001936656

这里可以看到,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

img

  • 测试nginx配置是否正确
1
sudo nginx -t
  • 重启nginx
1
sudo systemctl restart nginx

再次检查lsky是否运行

image-20250127002959039

成功!

如果以上的思路以及方案仍没有帮助到你,可以通过以下方面进行排查

其他方面排查

一、查看文件权限是否有误

Web 服务器(如 Nginx 或 Apache)可能无法访图床文件所在的文件或目录,导致错误。

将下面的路径改成自己的图床文件路径

1
2
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

二、服务器资源不足

查看内存使用

1
free -h

作者留言:细心的师傅们可能发现了,错误日志的时间显示横跨两天,没错我排查了两天T^T,如果这篇文章帮助到您,可以留个小心心~Thanks♪(・ω・)ノ