【问题标题】:How to explain Composer's error log?如何解释 Composer 的错误日志?
【发布时间】:2021-11-04 01:56:48
【问题描述】:

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

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

有没有人知道完整的文档或者如何解释日志背后的原因,也许以上面的为例?

【问题讨论】:

  • 那么你的问题是什么?您是否正在寻找更好的日志记录功能?然后请将此作为功能请求报告给作曲家

标签: php composer-php


【解决方案1】:

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

正如链接的GitHub issue 中所建议的,“结论:不要安装”消息可能与minimum-stability 中定义的要求有关。另一个linked question 可能与GH-7215 报告的 Composer 的错误有关。

错误

这是一个解释 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。如果请求的版本与锁定的版本不兼容(如不同的主要版本),则不能同时安装两者。此消息通常与已经提到的“只能安装一个”消息一起出现。因此,每当您看到“锁定”时,这意味着 Composer 会从 composer.lock 文件中读取您安装的软件包版本。要解决问题,您可以使用composer why/depends 命令查找请求包的原因并调整兼容性,否则,您可以尝试删除composer.lock 文件并从头开始(最好从空文件夹开始)。

    见:Installation failed for laravel/lumen-installer: guzzlehttp/guzzle locked at 6.3.0

  • org/package1 vx.y.z 冲突与 org/package2[vX.Y.Z]。

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

  • 与您的要求冲突或minimum-stability

    这条消息的意思是它的意思,所以你应该检查所需的版本和/或你的minimum-stability设置。

这可能是由于包被标记为不稳定而您的要求是“仅稳定的。请参阅:But these conflict with your requirements or minimum-stability

或者因为与其他已安装的包冲突。请参阅:How to identify what is preventing Composer from installing latest version of a package?

如有其他错误,请查看官方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 的依赖问题,您可以:


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

【讨论】:

  • 感谢您抽出宝贵时间撰写此详尽的答案。我会将其标记为解决方案。如果出现依赖性问题,它看起来会有所帮助。 composer 错误日志本身还需要很多改进。
猜你喜欢
  • 2015-02-25
  • 1970-01-01
相关资源
最近更新 更多