使用Composer创建Zend Framework 3新项目时遇依赖冲突问题
Zend Framework 3 依赖冲突解决办法
你用composer create-project -n -sdev zendframework/skeleton-application myPremAppZEND创建ZF3项目后,运行composer update碰到的依赖不兼容问题,本质是当前Composer版本对应composer-plugin-api 2.1.0,而项目默认依赖的两个插件仅支持composer-plugin-api ^1.0,导致版本约束不匹配。
给你两个可行的解决思路:
思路一:降级Composer到1.x版本
Composer 2.x系列默认使用plugin-api 2.0+,而ZF3骨架项目的老插件只适配1.x版本的api。直接降级Composer即可解决:
composer self-update --1
降级完成后再运行composer update就能正常执行。如果之后其他项目需要使用Composer 2.x,再执行composer self-update --2切换回去即可。
思路二:修改项目依赖约束,适配Composer 2.x
如果不想降级Composer,可以直接调整项目根目录的composer.json,替换为支持plugin-api 2.x的依赖版本:
- 打开项目根目录的
composer.json文件 - 修改
require区块:- 将
"zendframework/zend-component-installer": "^1.0 || ^2.1"替换为"zendframework/zend-component-installer": "^3.0"(3.0及以上版本支持plugin-api 2.x) - 可选择移除
zendframework/zend-skeleton-installer(该插件仅在项目创建时用于交互式安装额外组件,项目初始化完成后无实际作用),若需保留则将版本改为^1.1(1.1及以上版本支持plugin-api 2.x)
- 将
- 保存文件后运行
composer update
修改后的require区块示例(移除skeleton-installer的情况):
"require": { "php": "^5.6 || ^7.0", "zendframework/zend-component-installer": "^3.0", "zendframework/zend-mvc": "^3.1.1", "zfcampus/zf-development-mode": "^3.2" }
内容的提问来源于stack exchange,提问作者Axel
相关产品推荐
相关产品推荐

