我正试图为我正在努力工作的现有Symfony项目安装依赖项。我查看了这个https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file,它说我应该运行更新命令:php composer.phar update
。我这样做了,但是我得到了以下错误:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- phpro/grumphp[v0.12.0, ..., v0.12.1] require composer-plugin-api ~1.0 -> found composer-plugin-api[2.1.0] but it does not match the constraint.
- Root composer.json requires phpro/grumphp ^0.12 -> satisfiable by phpro/grumphp[v0.12.0, v0.12.1].
似乎是它需要作曲家1。尝试删除供应商文件夹并使用composer self-update --1
降级编写器。
composer install
或composer update
。作为Windows 11用户,laravel 10也发现了同样的问题。x.x(最新版本)。需要更新作曲器,但"Windows 11"以上不允许像"composer self-update"这样的命令。所以我从web composer下载了一个新的composer.exe,并重新安装了它(不删除旧的),它会自动更新,它为我工作。
require composer-plugin-api ~1.0
错误消息的那一部分告诉您,您正在使用的任何包都需要Composer v1提供的API。在某些情况下,这个问题只有一个解决方案:将Composer降级到v1以使用您当前使用的包。但这不是一个长期的解决方案,因为Packagist已经弃用了对v1的支持。此外,Composer的v2带来了巨大的性能改进,所以更新带来了真正的好处:)
在您的特定情况下,phpro/grumphp
需要旧的API。您正在使用一个相当旧的版本,因为版本约束^0.12
只匹配该包的两个版本,即0.12.0(2017年9月发布)和0.12.1(2017年11月发布)。自0.18.1(于2020年5月发布)以来,此包支持Composer v1和v2,因此将此包更新到0.18.1或更高版本有助于解决您的问题,而无需降级到Composer v1。