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,使配置变更生效。