为什么Composer无法将johnpbloch/wordpress-core更新到补丁版本?
问题根因
你遇到的升级冲突是子依赖的硬版本约束导致的,和你根项目下johnpbloch/wordpress-core的^5.8约束无关:
- 报错信息明确提到
johnpbloch/wordpress 5.8.0 requires johnpbloch/wordpress-core 5.8.0,这个johnpbloch/wordpress是你项目的隐式依赖(没有直接写在根composer.json的require里),它的5.8.0版本强制要求core包必须严格等于5.8.0,直接卡死了core包的升级路径。 - 这个
johnpbloch/wordpress是你引入的wecodemore/wpstarter ~2.0默认依赖的包,你自己显式引入的johnpbloch/wordpress-core和它的依赖规则冲突,所以单独升级core包不会生效。
解决步骤
- 先执行命令
composer why johnpbloch/wordpress,确认该包的引入来源,输出会明确显示是wecodemore/wpstarter依赖了该包。 - 二选一执行以下操作即可:
- 方案1:在根composer.json的require区块中新增
"johnpbloch/wordpress": "^5.8.1"约束,主动声明该包的版本要求,对应版本的johnpbloch/wordpress会自动匹配johnpbloch/wordpress-core 5.8.1,和你原有约束无冲突。 - 方案2:如果你不需要
wpstarter默认引入的WordPress整合包,可在根composer.json中新增replace配置,忽略该隐式依赖:"replace": { "johnpbloch/wordpress": "*" }
- 方案1:在根composer.json的require区块中新增
- 调整后执行命令
composer update johnpbloch/wordpress-core johnpbloch/wordpress,即可正常完成core包的版本升级。
内容的提问来源于stack exchange,提问作者Antti Koskinen
相关产品推荐
相关产品推荐

