Laravel 7升级至Laravel 9遇依赖冲突报错,求解决方案
Laravel 7 升级至 Laravel 9 依赖冲突问题及解决
冲突错误详情
macsidigital/laravel-api-client3.3.0 至 3.3.4 版本要求macsidigital/laravel-oauth2-client^1.2,可匹配版本为1.2.0、1.2.1、1.2.x-dev、v1.x-devmacsidigital/laravel-zoom4.1.5 至 4.1.9 版本要求macsidigital/laravel-api-client^3.3,可匹配版本为3.3.0至3.3.5macsidigital/laravel-oauth2-client1.2.0 至 1.2.x-dev 版本要求illuminate/support7.0|8.0,仅支持Laravel7/8对应的support组件- Laravel9的
laravel/framework会替代illuminate/support,二者无法共存,因此当前依赖链无法兼容Laravel9 mcamara/laravel-localizationv1.7.0已支持Laravel9,无冲突- 结论:当前依赖组合无法安装Laravel9框架
Composer提示可使用--with-all-dependencies (-W)参数允许对锁定版本的包进行升级、降级或移除操作。
当前 composer.json 内容
{ "name": "laravel/laravel", "type": "project", "description": "The Laravel Framework.", "keywords": [ "framework", "laravel" ], "license": "MIT", "require": { "php": "^8.0", "codezero/laravel-unique-translation": "^3.4", "fideloper/proxy": "^4.4", "fruitcake/laravel-cors": "^2.0", "guzzlehttp/guzzle": "^7.0.1", "laravel/framework": "^9.0", "laravel/tinker": "^2.5", "laravel/ui": "2.4", "livewire/livewire": "^2.3", "macsidigital/laravel-zoom": "^4.1", "mcamara/laravel-localization": "v1.7.0", "spatie/laravel-translatable": "^4.6", "yoeunes/toastr": "^1.2" }, "require-dev": { "spatie/laravel-ignition": "^1.0", "fakerphp/faker": "^1.9.1", "mockery/mockery": "^1.3.1", "nunomaduro/collision": "^6.1", "phpunit/phpunit": "^9.3.3" }, "config": { "optimize-autoloader": true, "preferred-install": "dist", "sort-packages": true }, "extra": { "laravel": { "dont-discover": [ "barryvdh/laravel-ide-helper" ] } }, "autoload": { "psr-4": { "App\\": "app/" }, "classmap": [ "database/seeds", "database/factories" ] }, "autoload-dev": { "psr-4": { "Tests\\": "tests/" } }, "minimum-stability": "dev", "prefer-stable": true, "scripts": { "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "@php artisan package:discover --ansi" ], "post-root-package-install": [ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], "post-create-project-cmd": [ "@php artisan key:generate --ansi" ] } }
解决步骤
升级冲突包版本
修改composer.json中的以下依赖:- 将
macsidigital/laravel-zoom从^4.1改为^5.0(5.x版本已适配Laravel9,其依赖的laravel-api-client4.x和laravel-oauth2-client2.x均支持Laravel9) - 将
laravel/ui从2.4改为^3.0(3.x版本适配Laravel9)
修改后的
require段示例:"require": { "php": "^8.0", "codezero/laravel-unique-translation": "^3.4", "fideloper/proxy": "^4.4", "fruitcake/laravel-cors": "^2.0", "guzzlehttp/guzzle": "^7.0.1", "laravel/framework": "^9.0", "laravel/tinker": "^2.5", "laravel/ui": "^3.0", "livewire/livewire": "^2.3", "macsidigital/laravel-zoom": "^5.0", "mcamara/laravel-localization": "v1.7.0", "spatie/laravel-translatable": "^4.6", "yoeunes/toastr": "^1.2" }- 将
执行更新命令
运行以下Composer命令,允许更新所有依赖链:composer update --with-all-dependencies验证兼容性
如果仍有冲突,可逐一检查其他包的Laravel9支持情况,替换为对应兼容版本。
内容的提问来源于stack exchange,提问作者New New
相关产品推荐
相关产品推荐

