Composer:阻止更新需要更高PHP版本

时间:2017-08-17 15:33:25

标签: php laravel doctrine composer-php

我正在PHP项目中使用doctrine/dbal(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].

特别是这些:

  

doctrine / common v2.4.3需要doctrine / inflector 1. * - >可以通过doctrine / inflector [v1.2.0]来满足。

     

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

这意味着,即使dbal已过时,也需要最新的common,而common需要最新的inflector包。问题是inflector启动取决于PHP7来运行。

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

1 个答案:

答案 0 :(得分:4)

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

{
    "config": {
        "platform": {
            "php": "5.6.14"
        }
    }
}

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