搜索

首页  >  问答  >  正文

重新写的标题为:解决 Composer 错误:“您的 PHP 版本不满足要求” - 参考升级 PHP

<p>在将PHP从7.4升级到8.0之后,我在现有的项目上运行了<code>composer update</code>,然后出现了以下错误:</p> <blockquote> <ul> <li>acme/some-package[1.0.0, ..., 1.4.0]需要php ^5.6.4 || ^7.0 -> 您的php版本(8.0.3)不满足该要求。</li> </ul> </blockquote> <p>这是什么意思,我该如何修复它?</p> <p><em>(这是一个参考答案,旨在涵盖一个经常遇到的问题。场景只是一个例子。另请参阅:“如何解释Composer的错误日志?”)</em></p>
P粉162773626P粉162773626490 天前592

全部回复(2)我来回复

  • P粉670838735

    P粉6708387352023-08-23 22:07:58

    如果你正在使用PHP版本8,一些尚未支持的插件可能会导致安装错误。

    composer install --ignore-platform-req=php 或者 composer install --ignore-platform-reqs

    这个选项可以用来设置composer可以忽略的特定要求。

    回复
    0
  • P粉289775043

    P粉2897750432023-08-23 09:22:20

    问题

    除了他们所需的其他软件包的版本外,Composer软件包还可以指定它们支持的PHP版本。

    在解析要安装的软件包的版本时,Composer必须找到与所有约束条件匹配的版本:

    • 您在composer.json中为依赖项指定的版本约束条件
    • 每个软件包为其依赖项指定的版本约束条件
    • 每个软件包支持的PHP版本

    如果没有满足所有这些约束条件的软件包,您将收到一个错误。

    常见的困惑

    请注意,PHP版本的版本约束条件遵循与其他Composer约束条件相同的规则。因此,^7.0的约束条件表示“7.0以上的任何7.x版本”,不包括8.0。

    解决方案

    要解决这个问题,您需要放宽其中一个约束条件:

    1. 查看错误消息中提到的软件包(例如示例中的acme/some-package)并在Packagist(或您配置的任何自定义软件包源)上找到它。
    2. 查看是否存在支持您的PHP版本的新版本。
    3. 如果没有,您需要找出需要添加该支持的内容。这可能意味着直接检查项目、运行其测试并提交一个补丁来标记它与新版本兼容。
    4. 如果(当)支持已添加,您需要确保您的composer.json和其他依赖的软件包不排除该新版本。例如,如果您当前依赖于acme/some-package的版本^1.0,但PHP 8.0仅从版本2.2.0开始支持,您需要将约束条件更改为^2.2,并确保您的应用程序仍然兼容。

    临时解决方法

    有时,您非常确定您的应用程序在使用与之前相同的软件包版本时能够正常运行。在这种情况下,您可以在composer.json中使用platform配置变量来假装您仍在使用旧版本。 这只应作为临时解决方法或用于测试,因为这意味着可能会安装在您的新PHP版本上完全无法使用的软件包。

    例如:

    {
        "config": {
            "platform": {
                 "php": "7.4.999"
            }
        }
    }
    

    另请参阅“在Composer中覆盖PHP基本依赖项

    回复
    0
  • 取消回复