Composer php 如何解决“问题”;只能安装以下其中一个:;冲突?

Composer php 如何解决“问题”;只能安装以下其中一个:;冲突?,composer-php,Composer Php,我已经通过Composer安装了一个包,它也安装了Guzzlehttp,因为这个包。 之后,我尝试通过Composer安装另一个包,这也需要Guzzlehttp,Composer尝试再次安装它 但我有一个错误: 问题1 只能安装一个:guzzlehttp/guzzle[6.2.0,6.0.2] 只能安装一个:guzzlehttp/guzzle[6.0.2,6.2.0] 只能安装一个:guzzlehttp/guzzle[6.0.2,6.2.0] 我知道问题出在哪里,但我不知道如何解决它。

我已经通过Composer安装了一个包,它也安装了Guzzlehttp,因为这个包。 之后,我尝试通过Composer安装另一个包,这也需要Guzzlehttp,Composer尝试再次安装它

但我有一个错误:

问题1

  • 只能安装一个:guzzlehttp/guzzle[6.2.0,6.0.2]

  • 只能安装一个:guzzlehttp/guzzle[6.0.2,6.2.0]

  • 只能安装一个:guzzlehttp/guzzle[6.0.2,6.2.0]


我知道问题出在哪里,但我不知道如何解决它。

我遇到了类似的问题,我不得不运行

composer更新

在安装新软件包之前。这将取决于其他安装的软件包是否也更新了它们的依赖关系。

当两个不同的软件包指向相同的依赖关系,但不同的主要互斥版本,其中只能安装一个时,将显示“只能安装一个[x,y]”消息


故障排除 例如,由于
composer.lock
文件中存在的信息可能与您尝试安装的内容冲突,某个版本可能会被“锁定”。在这种情况下,当混淆错误出现“locked at x.y.z”消息时,您可以使用以下命令了解已安装软件包的现有依赖关系:

composer show -t
注意:
-t
显示为嵌套的树状视图,将其拖放以查看平面列表

要查看问题包在项目中的引用位置,请运行:

composer why org/package -t
注意:
-t
显示为嵌套的树状视图,将其拖放以查看平面列表

要查看您尝试安装的软件包的详细信息,您可以运行:

composer show -a org/package # Package to inspect.
注意:要检查特定版本,请添加
x.y.z
,例如:
composer show-a guzzle http/guzzle 6.2.0


要进一步排除故障,根据您的情况,您可以尝试:

  • 通过以下方式更新具有依赖项的现有包:

    composer update --with-dependencies
    
  • composer.json
    中升级或删除冲突的依赖项(保持简单)

  • 当混淆消息显示“锁定在x.y.z”时,使用
    composer why org/package
    查看文件包的引用位置(或通过查找
    x.y.z
    手动检查
    composer.lock
    的内容)。如果没有帮助,考虑删除<代码>作曲家。锁定< /代码>并重试;<李>
  • 当要求使用时,选择
    n
  • 在空文件夹中重新尝试简单的
    composer.json
    ,简化配置
  • 运行
    composer diagnose
    检查是否存在任何常见错误
  • 使用
    -v
    /
    -vv
    /
    -vvv
    增加命令的详细程度
  • 另见:

我通过在版本号前添加一个“^”来解决这个问题。比如说

编写器需要drupal/slack:^1.2.0

而不是

composer require drupal/slack:1.2.0

当后者导致这一错误时

这是一种依赖冲突。请发布您的
require
部分,以便其他人可以查看并建议一些更好的匹配版本约束。@JensA.Koch我认为这是一个错误的建议,因为虽然这可能会解决海报的问题,但到达此页面的其他搜索者自己不会有解决此问题的方法,除了在互联网上发布自己的
require
。换句话说,这不是一个通用的解决方案。请注意,这会更新composer.json文件中的所有依赖项,如果依赖项没有正确固定,则可能会导致破坏性的更改。