Ubuntu上升级Laravel版本的完整流程
tar -czvf laravel_project_backup.tar.gz /path/to/project
压缩)和数据库(使用mysqldump -u username -p database_name > backup.sql
或云服务商快照功能),确保升级失败时可快速回滚。php -v
确认当前PHP版本,若不满足,需先升级PHP(例如升级到PHP 8.2:添加Ondřej Surý的PPA源sudo add-apt-repository ppa:ondrej/php
,然后运行sudo apt-get update && sudo apt-get install php8.2 php8.2-cli php8.2-mbstring php8.2-xml php8.2-mysql
,最后切换默认版本sudo update-alternatives --config php
)。composer self-update
),然后在项目根目录运行composer update
更新现有依赖,解决潜在的依赖冲突。UPGRADE.md
或对应版本文档),重点关注破坏性变更(如命名空间调整、方法签名修改、配置文件变动),提前规划代码适配方案。require
部分的laravel/framework
版本(如升级到L11则改为"laravel/framework": "^11.0"
),同时检查并更新其他Laravel生态包(如laravel/sanctum
、laravel/tinker
、spatie/laravel-ignition
)的版本,确保与目标Laravel版本兼容。composer update laravel/framework
(精确更新Laravel框架)或composer update
(更新所有依赖),等待Composer解析依赖并完成安装。此过程可能因依赖冲突需手动干预(如删除vendor
目录后重新运行composer install
)。config/app.php
、config/database.php
),不要直接覆盖现有文件,而是通过代码对比工具(如VS Code的Diff功能)合并差异,保留自定义配置(如邮件驱动、缓存驱动)。php artisan optimize
命令,需删除项目中的相关调用;Laravel 10调整了中间件的注册方式,需更新app/Http/Kernel.php
文件。composer.json
中的第三方包(如laravel/ui
、intervention/image
)是否支持目标Laravel版本,若有更新则运行composer update package/name
,避免兼容性问题。php artisan migrate
应用迁移。若迁移失败,需检查SQL语句(如字段类型兼容性)和Eloquent模型(如属性类型声明),调整后重试。php artisan test
执行单元测试、功能测试,确保核心业务逻辑未受影响。sudo service apache2 restart
;若使用Nginx,运行sudo service nginx restart
,使配置变更生效。