将Laravel 9升级至10:同步更新vendor外项目代码
Laravel 9 升级到 Laravel 10 完整操作指南
一、Composer 依赖更新(vendor目录同步)
- 修改项目根目录下的
composer.json文件:- 将
laravel/framework的版本约束改为^10.0 - 确保PHP版本要求更新为
>=8.1(Laravel 10 最低要求PHP 8.1) - 同步调整其他依赖包(如
laravel/sanctum、laravel/fortify等官方扩展)至支持Laravel 10的版本
- 将
- 执行更新命令:
若出现依赖冲突,需逐个排查第三方包,升级到兼容Laravel 10的版本后重新执行。composer update laravel/framework:^10.0 --with-all-dependencies
二、vendor外项目代码同步修改
结合Laravel 9到10的核心文件变更,重点调整以下内容:
1. app/Console/Kernel.php
修改schedule方法的返回类型声明,必须返回Schedule实例:
// Laravel 9 写法 protected function schedule(Schedule $schedule) { // 你的调度任务 } // Laravel 10 需修改为 protected function schedule(Schedule $schedule): \Illuminate\Console\Scheduling\Schedule { // 你的调度任务 return $schedule; }
2. app/Exceptions/Handler.php
register方法需明确返回void类型- 若自定义了
render方法,需声明返回类型为\Symfony\Component\HttpFoundation\Response
3. 路由文件(routes/web.php、routes/api.php)
- 确保闭包路由的返回类型符合规范(如返回视图时可声明
\Illuminate\View\View) - 移除Laravel 10中已废弃的路由语法(如过时的路由参数约束写法)
4. 模型与控制器
- 模型的
fillable/guarded属性需严格定义,避免批量赋值漏洞(Laravel 10对该逻辑的验证更严格) - 控制器方法建议明确返回类型,例如:
public function index(): \Illuminate\View\View { return view('posts.index', ['posts' => Post::all()]); }
5. 配置文件
检查config/app.php中的providers数组,移除Laravel 10已废弃的服务提供者(如部分旧官方扩展的提供者)
三、升级后验证
- 运行测试套件确保功能正常:
php artisan test - 清除缓存并启动服务验证核心流程:
php artisan optimize:clear php artisan serve - 查看
storage/logs/laravel.log,排查并修复所有警告、错误信息(尤其是废弃方法调用提示)
内容的提问来源于stack exchange,提问作者JanBoehmer
相关产品推荐
相关产品推荐

