参考-编写器错误“;您的PHP版本不满足要求”;升级PHP之后
将PHP从7.4更新到8.0后,我在现有项目上运行了参考-编写器错误“;您的PHP版本不满足要求”;升级PHP之后,php,composer-php,php-8,Php,Composer Php,Php 8,将PHP从7.4更新到8.0后,我在现有项目上运行了composer update,并得到如下错误: acme/some包[1.0.0,…,1.4.0]需要php^5.6.4 | | ^7.0->您的php版本(8.0.3)不满足该要求 这意味着什么?我该如何修复它 (这是一个参考答案,旨在涵盖一个经常遇到的问题。该场景只是一个示例。另请参见:)问题 除了所需的其他软件包的版本外,Composer软件包还可以指定它们支持的PHP版本 在解析要安装的软件包版本时,Composer必须找到与所有
composer update
,并得到如下错误:
- acme/some包[1.0.0,…,1.4.0]需要php^5.6.4 | | ^7.0->您的php版本(8.0.3)不满足该要求
- 为
composer.json中的依赖项指定的版本约束
- 每个包为其依赖项指定的版本约束
- 每个包支持的PHP版本
^7.0
的约束意味着“7.0以上的任何7.x版本”,不包括8.0
解决方案
要解决此问题,您需要放松其中一个约束:
acme/some package
,在示例中),并在上找到它(或您配置的任何自定义包源)composer.json
,以及您所依赖的其他软件包不排除该新版本。例如,如果您当前依赖于acme/somepackage
version^1.0
,但PHP8.0仅从版本2.2.0开始受支持,则需要将约束更改为^2.2
,并确保应用程序仍然兼容composer.json
中使用,假装仍在使用旧版本这只能作为临时解决办法或用于测试,因为这意味着将安装可能在新PHP版本上完全损坏的软件包
例如:
{
“配置”:{
“平台”:{
“php”:“7.4.999”
}
}
}
另请参见“作为附加提示:如果要检查如何在不运行
composer update
的情况下使项目兼容,composer将提供命令why not
。您不仅可以使用软件包及其版本运行它:composer why not vendor/package 2.0
将列出阻止安装vendor/package
v2.0的所有其他软件包版本
这也适用于PHP本身:composer为什么不使用PHP 8.0
将告诉您哪些软件包阻止使用更高版本的PHP
作为补充说明,require/remove和partial更新现在要快得多,因为Composer只加载正在更改的包的元数据
我注意到一个没有提供链接的回复
希望这是有帮助的我认为已经足够好了,可以作为参考。这就是我试图用它作为所有这些“作曲家不会安装!!1!”问题的复制目标。@yivi谢谢,我以前没见过这个。两者之间的交叉引用肯定是有用的,但我认为有一个额外的指南关注这一特定案例是有价值的。目前,我们收到了很多关于升级到PHP8.0的问题,因为这是一个人们在主要版本发布之前通常不会考虑的限制。我在7.0发布时发现了一大堆类似的问题,这些问题目前没有被标记为任何内容的重复,有些问题从未被回答过,所以我打算将它们全部指向这里。(我只是还没有时间。)我不确定这和这个问题有什么关系。你是不是偶然把它寄错地方了?