Composer提示zend-servicemanager 2.7.8与zendframework 2.4.0冲突求助
ZF2遗留系统依赖安装冲突解决思路
1. 移除重复的servicemanager依赖
zendframework/zendframework 2.4.*稳定版已经内置了适配版本的zend-servicemanager,你单独声明zendframework/zend-servicemanager": "2.7.8"会触发版本冲突提示,直接从composer.json的require节点中删除这一行。
2. 固定所有依赖版本,杜绝自动升级
你的composer.json里大量使用范围版本约束(>=、~、^),再加上minimum-stability: dev的设置,很容易拉取到与ZF2不兼容的依赖更新。把所有范围约束改成具体的兼容版本号:
phpmd/phpmd:1.4.1dompdf/dompdf:0.6.2imagine/imagine:0.5.0nicolab/php-ftp-client:1.2.0twig/twig:1.44.7(Twig 1.x最后稳定版,兼容PHP5.4)leafo/scssphp:0.6.6cocur/slugify:2.3.6twig/extensions:1.5.4google/apiclient:2.15.0(支持PHP5.4的最后版本)
修改后的composer.json require节点示例:
"require" : { "php" : ">=5.4", "zendframework/zendframework" : "2.4.*@stable", "phpmd/phpmd" : "1.4.1", "dompdf/dompdf" : "0.6.2", "marcelojeff/php-sdk" : "dev-master", "imagine/imagine" : "0.5.0", "aws/aws-sdk-php-zf2" : "~2.0", "neitanod/forceutf8" : "dev-master", "elasticsearch/elasticsearch" : "~2.3", "zfcampus/zf-oauth2" : "~1.3", "nicolab/php-ftp-client" : "1.2.0", "twig/twig" : "1.44.7", "leafo/scssphp" : "0.6.6", "cocur/slugify" : "2.3.6", "twig/extensions" : "1.5.4", "layershifter/tld-extract" : "dev-master", "google/apiclient" : "2.15.0", "disal/rox": "dev-master" }
3. 执行安装命令
先清理composer缓存,再执行安装,避免缓存导致的版本拉取错误:
composer clear-cache composer install --prefer-dist --no-dev
--no-dev跳过开发依赖,减少冲突概率;--prefer-dist优先下载压缩包,加快安装速度。
补充说明
如果仍遇到包找不到的问题,可尝试添加旧包的代码仓库到composer.json的repositories节点,强制拉取历史版本,但这一步仅作为最后手段,优先完成前三个步骤即可解决大部分冲突。
内容的提问来源于stack exchange,提问作者Rafael Tuneca
相关产品推荐
相关产品推荐

