背景:我在桌面计算机上使用Silex设置了一个新项目,并使用我需要的依赖项设置了我的composer.json文件。我在桌面上成功运行了“composer.phar install”,没有任何问题。
我切换到我的笔记本电脑上工作了一些项目,将git repo克隆到了笔记本电脑,并尝试进行“composer.phar安装”,但收到了这条消息:
Your requirements could not be resolved to an installable set of packages.
所以我做了一个“composer.phar update”,但它确实有效,但我不希望我的composer.lock文件更新。
还有其他人有这个问题吗?如果没有,有人可以解释一下我做错了吗?
编辑:我想我应该回到这个并更新问题。我很久没有遇到过这个问题了。我不知道这是对作曲家的更新是否已修复它(人们可能必须发表评论让我知道他们是否仍然遇到这个问题)或者现在我已经学到了更多关于作曲家的知识,我只是以一种我没有遇到过的方式做事。无论哪种方式,我都没有在将近一年半的时间内看到这条消息,除非我的composer.json中的软件包规范确实被破坏了。
答案 0 :(得分:1)
嗯,我的猜测是你正在使用一个基于分支(dev-master
,dev-branch-name
或branch-name@dev
)的库,维护者会强迫推送它最近(例如为了重新分支)。
尽可能尝试使用稳定的分支(带有链接到标签的版本的分支(v1.0.0,1.0。*等)。如果你不知道在哪里看,你应该寻找您的包裹在Packagist上,并使用不以dev-
开头的版本,或使用@dev
修饰符将最低稳定性设置为dev
。
当然,它有时是不可避免的。但在这种情况下,您可以随时要求库的维护者标记版本。 :)
我的第二个猜测是你的机器上有不同的库版本。以symfony/icu
库为例。根据您的计算机上的Icu版本,并且根据您启用的事实或您的计算机上安装了intl扩展的事实,您可能会遇到这些问题。
由于composer将尝试将composer.lock与您的旧计算机匹配,因此依赖关系将无法解析,因为锁定的包需要您的系统没有的依赖关系。
解决此问题的一种简单方法就是安装所需的扩展程序。