我通过composer安装了一个需要guzzlehttp >=6.0
的包。有了这个要求,composer选择安装6.2.1。
我现在试图要求一个明确要求6.1.1的依赖项。
我得到以下错误:
Problem 1
- Can only install one of: guzzlehttp/guzzle[6.1.1, 6.2.1].
- Can only install one of: guzzlehttp/guzzle[6.2.1, 6.1.1].
- Can only install one of: guzzlehttp/guzzle[6.1.1, 6.2.1].
- chargely/chargify-sdk-php v0.1.1 requires guzzlehttp/guzzle 6.1.1 -> satisfiable by guzzlehttp/guzzle[6.1.1].
- Installation request for chargely/chargify-sdk-php ^0.1.1 -> satisfiable by chargely/chargify-sdk-php[v0.1.1].
- Installation request for guzzlehttp/guzzle (locked at 6.2.1) -> satisfiable by guzzlehttp/guzzle[6.2.1].
同时,composer why
确认,因为我的>=6.0
要求,只有那个版本的guzzle存在。
理论上,初始需求应该可以使用降级版本的guzzle。我该如何让作曲者做到这一点呢?
如果您有两个具有并发性要求的包,您可以使用混叠。
在您的composer.json
中,只需添加:
"require": {
"guzzlehttp/guzzle": "6.2 as 6.1"
}
然后添加新的composer require ...
包。
查看更多详细答案
简写为"找到依赖项的正确版本,添加新包,然后删除硬编码的版本约束。
总结(对于带有供应商/依赖约束的vendor/current
:"^1.0|^2.0")
composer require vendor/dependency:^1.0
composer require vendor/new
composer remove vendor/dependency
。
- 对于
vendor/current
和vendor/dependency:"^1.0|^2.0"
- Composer将安装最高兼容版本
vendor/dependency:2.x
- 然后你尝试安装
vendor/new
与vendor/dependency:"^1.0"
=>失败(因为您已经安装了过高的供应商/依赖(2.0) 所以手动获取正确的供应商/依赖版本 - 获取新包
composer require vendor/new
删除编辑器中的硬编码约束。json - 。
composer require vendor/dependency:^1.0
composer remove vendor/dependency