从Symfony 3.4升级至4版本时composer update依赖冲突如何解决?
Symfony 3.4升4.x依赖冲突解决方案
核心冲突原因
- 你当前安装的
liip/imagine-bundle:2.7.3仅支持Symfony 4.4及以上的4.x版本,不兼容4.04.3版本,而你的`composer.json`中`symfony/symfony`的约束是`^4`,允许Composer拉取4.04.3的版本,触发版本冲突 - 你当前使用的PHP 7.2.14不支持Symfony 6.x系列组件,Composer无法通过拉取高版本Symfony组件解决冲突
- 开发依赖中
symfony/phpunit-bridge:^6.0要求PHP >=8.0.2,和当前PHP版本也存在隐藏冲突 - 你使用的Composer 1.x已经停止维护,会导致部分包无法正常拉取,是前置问题
修复步骤
- 先升级本地Composer到2.x版本,解决基础的包源支持问题
- 调整
composer.json中的依赖约束:- 将
symfony/symfony的版本约束从^4改为^4.4,直接锁定到支持的4.x稳定分支,避开4.0~4.3的冲突版本 - 将
require-dev下的symfony/phpunit-bridge版本约束从^6.0改为^4.4,适配PHP7.2和Symfony4.4的版本要求 - 可将
php的版本约束改为>=7.2,去掉旧的PHP5.x支持约束,避免版本匹配歧义
- 将
- 重新执行升级命令:
COMPOSER_MEMORY_LIMIT=-1 composer update "symfony/*" --with-all-dependencies - 若仍存在冲突,可临时将
liip/imagine-bundle的版本约束调整为^2.6,该版本支持全系列Symfony4.x,待Symfony升级完成后再按需升级该包即可
内容的提问来源于stack exchange,提问作者alexandre bru
相关产品推荐
相关产品推荐

