Composer:防止更新需要更高PHP版本的包
我在PHP项目中使用的是Composer:防止更新需要更高PHP版本的包,php,laravel,doctrine,composer-php,Php,Laravel,Doctrine,Composer Php,我在PHP项目中使用的是doctrine/dbal(v2.4.*)包。我的生产服务器运行PHPV5.6 今天早上我运行了composer update,更新了我的composer.lock文件。现在,当我部署到生产环境时,我看到: Problem 1 - Installation request for doctrine/inflector v1.2.0 -> satisfiable by doctrine/inflector[v1.2.0]. - doctrine/in
doctrine/dbal
(v2.4.*)包。我的生产服务器运行PHPV5.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].
具体而言:
条令/通用v2.4.3要求条令/拐点1.*->条令/拐点可满足[v1.2.0]
条令/拐点v1.2.0需要php^7.0->您的php版本
(5.6.14)不满足该要求
这意味着,即使dbal
是旧的,它也需要最新的common
,而common
需要最新的inductor
包。问题是拐点
根据要运行的PHP7启动
Composer中是否有任何方法将包的更新限制为特定PHP版本支持的包?比如说:“请尽可能地更新,但只有在服务器的PHP版本足够时才更新。”使用
composer.json
文件中的platform
选项定义生产环境使用的PHP版本,如下所示:
{
"config": {
"platform": {
"php": "5.6.14"
}
}
}
请参见是否可以使用拐点1.1?或者转到common 2.7.3,或者您可以转到dbal 2.5.13您的意思是我不仅应该直接要求
原则/dbal
,而且还应该要求common
和屈折因子
?如果dbal
已经需要它们,这有意义吗?您可以需要dbal,但只需将版本放到2.5.13我使用的dbal
版本是2.4.
。所以,它是旧的。但由于它在内部需要最新的软件包,所以不管它有多旧。trycomposer-require-doctor/indlector:1.1.0
“允许您伪造平台软件包(PHP和扩展),以便您可以模拟生产环境或在配置中定义目标平台”。听起来有些东西不是专门为生产设计的。我想在我尝试之前我无法确定。作为替代方案,请仅在尽可能靠近生产系统的环境中运行composer require
、composer update
、和composer install
。这个答案非常棒。。。谢谢