Composer:覆盖PHP版本的传递依赖

时间:2014-09-01 15:34:20

标签: php composer-php dependency-management

我正在开发一个使用guzzlehttp / guzzle的项目。

虽然我们的生产服务器使用PHP 5.4,但我们的构建框仍然是5.3,所以当它运行composer install时,我们会看到以下错误:

guzzlehttp/guzzle 4.2.x-dev requires php >=5.4.0 -> no matching package found.

有没有办法覆盖这个?我要求php 5.3“as”5.4.0,但它然后抱怨无法找到包'php'。

似乎需要PHP版本是包的特殊情况,并且不允许为普通包提供相同的覆盖。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我不知道如何解决这个问题。

问题是:Composer应该如何知道应该执行代码的PHP,而不是仅仅抓住它的依赖关系的PHP。目前无法覆盖PHP版本或已安装的扩展。

这个覆盖应该放在哪里?将它放入composer.json是错误的,因为这会改变Composer假定的检测到的PHP版本,并会导致冲突。它应该是用于覆盖假定的PHP版本的本地Composer实例的某种配置。

我建议将构建框升级到5.4或安装仅用于Composer的PHP 5.4的其他版本。

如果您不使用应该运行代码的PHP版本,您如何在测试执行期间检测该构建框上的版本冲突?