Lychee 是一款优秀且轻量的开源 PHP 自建相册。在没有开启自动更新或使用命令行环境时,手动完成源码覆盖与数据库迁移是最稳妥的升级方式。
本文将以升级至 Lychee v7.9.0 为例,讲解如何通过 SSH 命令行安全地完成相册升级、数据库备份及缓存清理,确保照片数据与配置文件(.env)不受影响。
一、前置准备:下载新版并确认版本
首先通过 SSH 登录服务器,将最新的 Lychee 发行包下载至临时目录并解压确认。
ssh xserver# 1. 进入临时目录并下载最新的 Lychee.zip
cd /tmp
wget -q https://github.com/LycheeOrg/Lychee/releases/latest/download/Lychee.zip -O Lychee_new.zip
# 2. 解压至临时提取目录
mkdir -p /tmp/Lychee_new_extract
unzip -q /tmp/Lychee_new.zip -d /tmp/Lychee_new_extract
# 3. 检查解压后的版本号
cat /tmp/Lychee_new_extract/Lychee/version.md二、备份 MySQL 数据库
在执行任何源码覆盖或数据库结构迁移(Migration)之前,务必先导出数据库备份。
mysqldump -u 【数据库用户名】 -p 【数据库名】 > ~/backup/lychee_db_$(date +%Y%m%d).sql如果忘记数据库密码,可以通过以下命令直接查看 Lychee 根目录下的 .env 配置文件来获取:
grep DB_PASSWORD /your/path/to/photos/.env三、执行核心升级步骤
为了防止升级过程中有访问请求写入数据,建议先开启维护模式(artisan down),然后使用 rsync 安全覆盖项目文件。
1. 开启维护模式并安全同步文件
rsync 命令行中必须排除(--exclude)数据库配置文件 .env、缓存文件夹 storage 以及保存原图和缩略图的 public/uploads 目录:
# 进入维护模式
php /your/path/to/photos/artisan down
# 使用 rsync 覆盖源码(保留配置文件与用户照片数据)
rsync -av --exclude='.env' \
--exclude='storage' \
--exclude='public/uploads' \
/tmp/Lychee_new_extract/Lychee/ \
/your/path/to/photos/注:如果服务器环境有多个 PHP 版本(如 Xserver 等托管主机),请将
php替换为指定版本的绝对路径(例如/usr/bin/php8.4)。

2. 执行数据库迁移与清空缓存
文件覆盖完成后,运行 Laravel 核心 Artisan 命令完成数据库结构更新与配置缓存刷新:
# 强制运行数据库迁移
php /your/path/to/photos/artisan migrate --force
# 依次清理配置、缓存、路由与视图缓存
php /your/path/to/photos/artisan config:clear
php /your/path/to/photos/artisan cache:clear
php /your/path/to/photos/artisan route:clear
php /your/path/to/photos/artisan view:clear
# 关闭维护模式,恢复正常访问
php /your/path/to/photos/artisan up四、常见问题与排错 (FAQ)
Q1:升级后打开网页提示 503 Service Unavailable?
- 原因:通常是因为升级中断或
artisan up命令未成功执行,导致系统依然处于维护模式。 - 解决办法:重新在终端运行一次启动命令即可:
php /your/path/to/photos/artisan upQ2:更新后页面部分样式缺失或图片显示异常?
- 解决办法:尝试在终端清理应用缓存并重新建联:
php artisan view:clear
php artisan route:clear