Composer:防止更新需要更高 PHP 版本的包

les*_*gar 2 php doctrine laravel composer-php

doctrine/dbal在我的 PHP 项目中使用(v2.4.*) 包。我的生产服务器运行 PHP v5.6。

composer update今天早上跑了更新我的composer.lock文件。现在,当我部署到生产环境时,我看到:

 Problem 1
    - Installation request for doctrine/inflector v1.2.0 -> satisfiable by doctrine/inflector[v1.2.0].
    - doctrine/inflector v1.2.0 requires php ^7.0 -> your PHP version (5.6.14) does not satisfy that requirement.
  Problem 2
    - doctrine/inflector v1.2.0 requires php ^7.0 -> your PHP version (5.6.14) does not satisfy that requirement.
    - doctrine/common v2.4.3 requires doctrine/inflector 1.* -> satisfiable by doctrine/inflector[v1.2.0].
    - Installation request for doctrine/common v2.4.3 -> satisfiable by doctrine/common[v2.4.3].
Run Code Online (Sandbox Code Playgroud)

具体这些:

学说/通用 v2.4.3 需要学说/变形器 1.* -> 可通过学说/变形器 [v1.2.0] 满足。

学说/inflector v1.2.0 需要 php ^7.0 -> 您的 PHP 版本 (5.6.14) 不满足该要求

这意味着,即使dbal是旧的,它也需要最新的common,并且common需要最新的inflector包。问题是inflector启动依赖PHP7来运行。

Composer 中是否有任何方法可以将软件包的更新限制为特定 PHP 版本支持的软件包?就像说:“请尽可能更新,但前提是服务器的 PHP 版本足够。”

xab*_*buh 6

使用文件中的platform选项composer.json来定义您的生产环境正在使用的 PHP 版本,如下所示:

{
    "config": {
        "platform": {
            "php": "5.6.14"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

https://getcomposer.org/doc/06-config.md#platform