我在网上做了很多研究,但没有找到 Composer 错误日志的文档。在我发现的讨论中,没有人给出与错误日志一致的解释。例如:
- [支持] 需要对“结论:不要安装...”进行解释 https://github.com/composer/composer/issues/2702
- 为什么作曲家在(看似)不存在任何障碍时说“结论:不要安装”? https://stackoverflow.com/q/45009772
我知道 Composer 做什么并且可以自己解决问题,但我经常必须为此咨询 packagist.org。尽管作曲家日志非常(而且不必要)冗长,但它只给了我一些提示。它并没有真正指出具体问题。
有谁知道完整的文档或如何解释日志背后的推理,也许以上面的为例?
Composer 的文档可以在以下位置找到:getcomposer.org/doc https://getcomposer.org/doc/, 尤其故障排除 https://getcomposer.org/doc/articles/troubleshooting.md部分。通常,依赖性问题来自于您的错误配置composer.json
理解 Composer 日志需要经验或在反复试验中学习。记录数百个错误中的每一个可能很快就会过时。如果您认为某些具体错误不够清楚,您可以随时提出新建议 https://github.com/composer/composer/issues at the Composer 的 GitHub 页面 https://github.com/composer/composer.
正如链接中所建议的GitHub问题 https://github.com/composer/composer/issues/2702,“结论:不要安装”消息可能与中定义的要求有关minimum-stability https://getcomposer.org/doc/04-schema.md#minimum-stability。其他链接问题 https://stackoverflow.com/q/45009772/55075可能与 Composer 的错误有关,如报告所述GH-7215 https://github.com/composer/composer/issues/7215.
Errors
这是一个解释常见 Composer 错误的小指南:
-
只能安装一个来源:org/package[x.y.z, X.Y.Z]。
如果您看到此消息,则可能是依赖性问题的主要原因。这基本上意味着,根据 Composer 的依赖性计算,这两个版本都是必需的,但只能安装一个主要版本(您不能同时拥有 x.y.z 和 X.Y.Z,除非您将配置拆分为不同的文件夹)。查看why
需要这些包,请使用composer why
/depends
命令并相应地调整依赖项。
See: 如何解决“只能安装其中之一:”冲突? https://stackoverflow.com/q/36611550/55075 & 运行composer install时如何解决两个包需求冲突? https://stackoverflow.com/q/21052831/55075
-
org/package2 的安装请求(锁定于 vX.Y.Z)
此消息意味着存在 org/package 的安装请求,但是它被锁定在 X.Y.Z。如果请求的版本与锁定版本不兼容(例如不同的主要版本),则无法同时安装两者。此消息通常与已经提到的“只能安装一个”消息一起出现。因此,每当您看到“locked at”时,这意味着 Composer 从composer.lock
文件。要排除故障,您可以使用composer why
/depends
命令查找请求包的原因并调整兼容性,否则,您可以尝试删除composer.lock
文件并从头开始(最好从空文件夹开始)。
See: laravel/lumen-installer 安装失败:guzzlehttp/guzzle 锁定在 6.3.0 https://stackoverflow.com/q/48427886/55075
-
org/package1 vx.y.z冲突与 org/package2[vX.Y.Z]。
这与上面的问题类似,两个包存在冲突,您需要手动解决依赖关系。阅读消息的整个上下文可能会给您提供更多线索。检查依赖树也可能有帮助(composer show -t
).
-
与您的要求相冲突或minimum-stability
此消息的含义如其所读,因此您应该检查所需的版本和/或您的minimum-stability
设置。
这可能是由于软件包被标记为不稳定而您的要求是“仅稳定”造成的。请参阅:但这些与您的要求或最低稳定性相冲突 https://stackoverflow.com/q/40453388/55075
或者因为与其他已安装的软件包发生冲突。看:如何确定是什么阻止了 Composer 安装最新版本的软件包? https://stackoverflow.com/q/45386572/1426539.
其他错误请查看官方Composer 的故障排除页面 https://getcomposer.org/doc/articles/troubleshooting.md.
故障排除
以下是如何解决一般 Composer 依赖问题的更多建议:
- Add
-v
/-vv
/-vvv
命令的参数以获得更详细的输出。
- Run
composer diagnose
检查常见错误以帮助调试问题。
- 如果您看到“locked at x.y.z”消息,则它与锁定在您的包中的包有关。
composer.lock
.
- 测试你的
composer.json
在空文件夹上。
- 保持你的
composer.json
到最低限度。
- Run
composer show -t
查看当前的依赖关系树。
- Run
composer show -a org/package x.y.z
查看有关包裹的详细信息。
- 请随时在以下位置提出新问题:堆栈溢出.
要完全调试 Composer 的依赖问题,您可以:
- 分析或修改源代码(例如DependencyResolver/Problem.php https://github.com/composer/composer/blob/master/src/Composer/DependencyResolver/Problem.php).
- 在下面运行 ComposerXDebug https://xdebug.org/,通过断点或生成完整或部分跟踪文件。
解释常见错误的有用线程:
- 如何解决“只能安装其中之一:”冲突? https://stackoverflow.com/q/36611550/55075
- composer.json 无法解析可安装的包集 https://stackoverflow.com/q/16672993/55075
- 当依赖项被锁定时发现 Composer 软件包的最新版本 https://stackoverflow.com/q/30277015/55075
- 当尝试安装 php-jwt 时遇到 auth0 问题 https://stackoverflow.com/q/42532831/55075
- 参考 - 升级 PHP 后 Composer 错误“您的 PHP 版本不满足要求” https://stackoverflow.com/q/66368196/
- 如何确定是什么阻止了 Composer 安装最新版本的软件包? https://stackoverflow.com/q/45386572/1426539
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)