1. 备份项目与数据库
升级前必须完整备份项目文件(包括app/、config/、routes/等核心目录)和数据库,防止升级过程中出现数据丢失或文件损坏。可通过tar -czvf laravel_backup.tar.gz /path/to/project备份项目,使用数据库管理工具(如phpMyAdmin)或命令行导出数据库。
2. 更新Composer至最新版本
Composer是Laravel的依赖管理工具,旧版本可能无法正确解析新版本依赖。在终端运行composer self-update,确保Composer为最新版。
3. 检查当前Laravel版本
通过查看composer.json文件中的require部分,确认当前Laravel版本。例如:
"require": {
"laravel/framework": "^7.0"
}
也可运行cat composer.json | grep laravel/framework快速查看。
4. 升级Laravel框架
若要升级到特定版本(如Laravel 9.0),运行:
composer require laravel/framework:^9.0 --with-all-dependencies
若要升级到最新稳定版,运行:
composer update laravel/framework
--with-all-dependencies参数会同步更新依赖包,避免版本冲突。
5. 更新其他依赖包
检查composer.json中的其他依赖(如laravel/ui、spatie/laravel-permission),确保其版本与新Laravel版本兼容。运行composer update更新所有依赖,或针对单个包运行composer update vendor/package-name。
6. 运行Laravel升级脚本
Laravel提供了artisan upgrade命令,可自动处理部分升级任务(如配置文件更新)。在项目根目录运行:
php artisan upgrade
该命令会检查并应用新版本的配置变更。
7. 执行数据库迁移与数据填充
若新版本涉及数据库结构调整(如新增表、修改字段),运行:
php artisan migrate
若有自定义数据填充逻辑,运行:
php artisan db:seed
确保数据库与代码同步。
8. 测试应用程序功能
在开发环境中全面测试应用程序:
php artisan test;storage/logs/laravel.log)是否有错误信息。9. 清理缓存
升级后清理Laravel缓存,确保新配置生效:
php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear
这一步可解决因缓存导致的配置不更新问题。
10. 部署到生产环境
确认测试无误后,将升级后的代码推送到生产环境(如通过Git),并重新启动Web服务(如Apache/Nginx):
sudo systemctl restart apache2 # 或nginx
若使用队列,需重启队列 worker:php artisan queue:restart。
注意事项:
Laravel Shift等自动化工具可简化升级流程,但仍需人工检查代码兼容性。