Laravel Shift 升级 Laravel 10 到 11 是最稳妥省时的方式,自动处理代码变更、配置调整和依赖更新;需先满足 PHP ≥ 8.2、Composer ≥ 2.5、Git 分支干净并备份数据;再通过 Shift 网站授权、选择仓库、启动升级生成 PR;最后人工核对 composer.json、手动发布迁移、检查配置与中间件、运行测试并清缓存验证。

用 Laravel Shift 升级 Laravel 10 到 11 是目前最稳妥、省时的方式,它能自动处理大部分代码变更、配置调整和依赖更新,大幅降低手动升级出错风险。
准备阶段:检查基础要求
升级前确保项目满足 Laravel 11 的硬性条件:
- PHP 版本 ≥ 8.2.0(Laravel 11 不再支持 PHP 8.1)
- Composer 已升级到最新稳定版(建议 2.5+)
- 项目代码已提交至 Git,并且当前分支干净(无未提交更改)
- 备份数据库与关键配置(如 .env、config/ 下自定义项)
使用 Laravel Shift 执行升级
整个过程分三步,全部在浏览器中完成:
- 访问 https://laravelshift.com/upgrade-laravel-10-to-11,登录 GitHub 账号授权访问你的仓库
- 选择目标仓库(必须是公开或已授权的私有库),Shift 会自动检测当前为 Laravel 10
- 点击 “Start Shift” —— 系统将分析代码、生成升级 PR(通常 2–5 分钟),包含所有框架变更、配置迁移、废弃方法替换等
合并前需人工确认的关键点
Shift 生成的 PR 并非“一键通过”,以下几类变更需要你逐项核对:
-
composer.json 更新:确认
"laravel/framework": "^11.0"及配套包(如sanctum→^4.0、passport→^12.0)已正确写入 -
迁移文件发布:若用了 Cashier、Passport、Sanctum、Telescope 等,需手动运行对应
php artisan vendor:publish --tag=xxx-migrations命令(Shift 不自动执行) -
配置与中间件变更:例如
app/Providers/AppServiceProvider.php中的默认绑定、bootstrap/app.php结构变化、中间件组重命名等,PR 注释通常会标出位置 -
测试与模型变更:Eloquent 的默认时间戳字段名、Collection 方法签名微调、测试中
RefreshDatabase行为变化等,建议运行全部测试验证
本地验证与上线
合并 PR 后,别急着部署:
- 运行
composer install --no-dev(生产环境)或composer update(开发环境)拉取新依赖 - 执行
php artisan config:clear && php artisan cache:clear清除旧缓存 - 如有新迁移,运行
php artisan migrate;若涉及结构变更,先在测试库验证 SQL 影响 - 用 Postman 或浏览器快速检查首页、登录、核心 API 是否正常,重点关注中间件、认证、队列和文件上传逻辑


















