【发布时间】:2018-01-26 02:53:25
【问题描述】:
我在我的 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.1 代替吗?或者去 common 2.7.3 或者你可以去 dbal 2.5.13
-
你的意思是我不仅应该直接要求
doctrine/dbal,还应该直接要求common和inflector?如果dbal已经需要它们,这是否有意义? -
您可以要求 dbal,但只需将版本降至 2.5.13
-
我使用的
dbal版本是2.4.*。所以,老了。但由于它在内部需要最新的包,所以不管它有多旧。 -
试试
composer require doctrine/inflector:1.1.0
标签: php laravel doctrine composer-php