如何解释Composer的错误日志?

时间:2018-01-03 08:10:18

标签: php composer-php

我在网上做了很多研究,但没有找到作曲家错误日志的文档。在我发现的讨论中,没有人得到与错误日志一致的解释。例如:

我知道,作曲家做了什么,可以自己解决问题,但我经常要咨询packagist.org。尽管非常(并且不必要)冗长,但作曲家日志只给了我一些提示。它没有真正指出具体问题。

有没有人知道完整的文档或如何解释日志背后的推理,可能以上面的例子为例?

1 个答案:

答案 0 :(得分:2)

可以在getcomposer.org/doc,尤其是Troubleshooting部分找到Composer的文档。通常,依赖性问题来自于composer.json的错误配置,并且了解Composer日志会带来经验或学习反复试验。记录数百个可能的错误可能会很快过时。如果您认为某些特定错误不够清晰,则可以始终在new suggestion处提出Composer's GitHub page

如链接GitHub issue中所述,"结论:不要安装"消息它可能与minimum-stability中定义的要求相关。另一个linked question可能与GH-7215报告的作曲家错误有关。

错误

这是一个小型指南,解释了常见的Composer错误:

  •   

    只能安装一个:org / package [x.y.z,X.Y.Z]。

    如果您看到此消息,则可能是依赖性问题的主要原因。它基本上意味着基于Composer的依赖性计算,这两个版本都是必需的,但只能安装一个主要版本(除非您为不同的文件夹拆分配置,否则不能同时拥有x.y.z和X.Y.Z)。要查看why这些软件包是必需的,请使用composer why / depends命令并相应地调整依赖项。

    请参阅:How to resolve a "Can only install one of:" conflict?& How to solve two packages requirements conflicts when running composer install?

  •   

    org / package2的安装请求(已锁定在 vX.Y.Z)

    此消息表示存在org / package的安装请求,但是它已锁定在X.Y.Z.如果请求的版本与锁定版本不兼容(如不同的主要版本),则无法同时安装。这个消息经常伴随着已经提到的#34;只能安装一个"一。因此,每当您看到"锁定在"时,这意味着Composer会从composer.lock文件中读取您安装的软件包版本。要进行故障排除,您可以使用composer why / depends命令查找请求包的原因并调整兼容性,否则,您可能会尝试删除composer.lock文件并从头开始(最好从空文件夹)。

    请参阅:Installation failed for laravel/lumen-installer: guzzlehttp/guzzle locked at 6.3.0

  •   与org / package2 [vX.Y.Z]

    org / package1 vx.y.z 冲突

    这是一个与上面类似的问题,其中两个包存在冲突,您需要手动解决依赖关系。阅读消息的整个上下文可能会给你一些更多的线索。检查依赖关系树也可能有所帮助(composer show -t)。

  •   

    与您的要求冲突或 minimum-stability

    此消息表示读取,因此您应检查所需的版本和minimum-stability设置。

    请参阅:But these conflict with your requirements or minimum-stability

如有任何其他错误,请查看官方 Composer's Troubleshooting page

疑难解答

以下是有关如何解决Composer依赖性问题的更多建议:

  • 在命令中添加-v / -vv / -vvv参数,以获得更详细的输出。
  • 运行composer diagnose以检查常见错误,以帮助调试问题。
  • 如果你看到"锁定在x.y.z"消息,它与您composer.lock
  • 中锁定的软件包有关
  • 在空文件夹上测试composer.json
  • composer.json保持在最低限度。
  • 运行composer show -t以查看当前的依赖关系树。
  • 运行composer show -a org/package x.y.z以查看有关该软件包的详细信息。
  • 随时在 Stack Overflow 上提出新问题。

要完全调试Composer的依赖性问题,您可以:

解释常见错误的有用线程: