Laravel 9升级至10时遭遇依赖冲突问题求助
Laravel 9 升级至 Laravel 10 依赖冲突排查与解决
问题背景
将Laravel 9升级到Laravel 10时出现依赖无法解析的错误,当前PHP版本为8.2.2,已满足Laravel 10要求的PHP 8.1.0+、Composer 2.2.0+条件,尝试过composer update --with-all-dependencies,替换tomfordrumm/jwt-auth为tymon/jwt-auth仍未解决。
原composer.json依赖配置
"require": { "php": "^8.0.2", "darkaonline/l5-swagger": "^8.4", "ejarnutowski/laravel-api-key": "^1.0", "guzzlehttp/guzzle": "^7.2", "laravel/framework": "^9.19", "laravel/sanctum": "^3.0", "laravel/tinker": "^2.7", "spatie/laravel-activitylog": "^4.7", "spatie/laravel-permission": "^5.8", "tomfordrumm/jwt-auth": "dev-develop" }, "require-dev": { "barryvdh/laravel-debugbar": "^3.7", "fakerphp/faker": "^1.9.1", "laravel/pint": "^1.0", "laravel/sail": "^1.0.1", "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^6.1", "phpunit/phpunit": "^9.5.10", "spatie/laravel-ignition": "^1.0" },
修改后的composer.json依赖配置
"require": { "php": "^8.1", "darkaonline/l5-swagger": "^8.4", "ejarnutowski/laravel-api-key": "^1.0", "guzzlehttp/guzzle": "^7.2", "laravel/framework": "^10.0", "laravel/sanctum": "^3.2", "laravel/tinker": "^2.8", "spatie/laravel-activitylog": "^4.7", "spatie/laravel-permission": "^5.8", "tomfordrumm/jwt-auth": "dev-develop" }, "require-dev": { "barryvdh/laravel-debugbar": "^3.7", "fakerphp/faker": "^1.9.1", "laravel/pint": "^1.0", "laravel/sail": "^1.18", "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^7.0", "phpunit/phpunit": "^10.0", "spatie/laravel-ignition": "^2.0.0" },
错误信息
Your requirements could not be resolved to an installable set of packages.
Problem 1 - illuminate/support[v5.6.0, ..., v5.8.36] require php ^7.1.3 -> your php version (8.2.2) does not satisfy that requirement. - illuminate/support[v6.0.0, ..., v6.19.1] require php ^7.2 -> your php version (8.2.2) does not satisfy that requirement. - illuminate/support[v7.0.0, ..., v7.28.4] require php ^7.2.5 -> your php version (8.2.2) does not satisfy that requirement. - illuminate/support[v8.0.0, ..., v8.11.2] require php ^7.3 -> your php version (8.2.2) does not satisfy that requirement. - Root composer.json requires tomfordrumm/jwt-auth dev-develop -> satisfiable by tomfordrumm/jwt-auth[dev-develop]. - Conclusion: don't install laravel/framework v10.0.2 (conflict analysis result) - Conclusion: don't install laravel/framework v10.0.3 (conflict analysis result) - Conclusion: don't install laravel/framework v10.1.0 (conflict analysis result) - Conclusion: don't install laravel/framework v10.1.1 (conflict analysis result) - Conclusion: don't install laravel/framework v10.1.2 (conflict analysis result) - Conclusion: don't install laravel/framework v10.1.3 (conflict analysis result) - Conclusion: don't install laravel/framework v10.1.4 (conflict analysis result) - Conclusion: don't install laravel/framework v10.1.5 (conflict analysis result) - Conclusion: don't install laravel/framework v10.0.1 (conflict analysis result) - tomfordrumm/jwt-auth dev-develop requires illuminate/support ^5.2|^6|^7|^8|^9 -> satisfiable by illuminate/support[v5.2.0, ..., v5.8.36, v6.0.0, ..., v6.20.44, v7.0.0, ..., v7.30.6, v8.0.0, ..., v8.83.27, v9.0.0, ..., v9.52.4]. - Only one of these can be installed: illuminate/support[v5.2.0, ..., v5.8.36, v6.0.0, ..., v6.20.44, v7.0.0, ..., v7.30.6, v8.0.0, ..., v8.83.27, v9.0.0, ..., v9.52.4, v10.0.0, ..., v10.1.5], laravel/framework[v10.0.0, ..., v10.1.5]. laravel/framework replaces illuminate/support and thus cannot coexist with it. - Root composer.json requires laravel/framework ^10.0 -> satisfiable by laravel/framework[v10.0.0, ..., v10.1.5].
解决方案
1. 彻底处理JWT依赖冲突
错误核心是tomfordrumm/jwt-auth的dev-develop分支仅支持到Laravel 9,无法兼容Laravel 10。替换tymon/jwt-auth时需确保清理旧依赖并指定兼容版本:
- 完全移除旧JWT包:
composer remove tomfordrumm/jwt-auth --remove-dependencies - 安装兼容Laravel 10的
tymon/jwt-auth版本:composer require tymon/jwt-auth "^2.1"
2. 更新其他依赖至Laravel 10兼容版本
逐一检查并升级不兼容的依赖:
spatie/laravel-activitylog: 从4.7升级到5.0spatie/laravel-permission: 从5.8升级到6.0darkaonline/l5-swagger: 从8.4升级到9.0barryvdh/laravel-debugbar: 从3.7升级到3.12
更新后的核心依赖示例:
"require": { "php": "^8.1", "darkaonline/l5-swagger": "^9.0", "ejarnutowski/laravel-api-key": "^1.0", "guzzlehttp/guzzle": "^7.2", "laravel/framework": "^10.0", "laravel/sanctum": "^3.2", "laravel/tinker": "^2.8", "spatie/laravel-activitylog": "^5.0", "spatie/laravel-permission": "^6.0", "tymon/jwt-auth": "^2.1" }, "require-dev": { "barryvdh/laravel-debugbar": "^3.12", "fakerphp/faker": "^1.9.1", "laravel/pint": "^1.0", "laravel/sail": "^1.18", "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^7.0", "phpunit/phpunit": "^10.0", "spatie/laravel-ignition": "^2.0.0" },
3. 清理缓存并重新更新依赖
执行以下命令确保依赖完全同步:
composer clear-cache composer update --with-all-dependencies
内容的提问来源于stack exchange,提问作者Rajib Khan
相关产品推荐
相关产品推荐

