`composer安装“在hhvm上运行”,即使我需要“php”


`composer install` running on `hhvm` even if I require `php`

我已经放入

"require": {
    "php": ">=5.5",
    "phpunit/phpunit": ">4,<6"
},

在我的composer.json文件中:

https://github.com/giorgiosironi/eris/blob/master/composer.json#L20

然而,composer install仍然接受在hhvm上运行,如所示

https://travis-ci.org/giorgiosironi/eris/jobs/118241849

我认为需要php意味着我想要一个特定版本的php,所以hhvm被排除在外。相反,这个选择似乎意味着如果存在php,它必须满足版本约束,但如果只有hhvm,它将不适用。

这就是正在发生的事情吗?如果是,我如何指定包与hhvm不兼容?

您可以使用冲突选项来表示您的包与HHVM冲突。这看起来像

"conflict": {
  "hhvm": "*"
}

它将您的包设置为与HHVM的每个版本都冲突。

HHVM发出PHP_VERSION常量。我确信composer只是简单地使用这些常量来计算这里的版本。

我的理解是,HHVM增加了他们的PHP_VERSION,因为他们获得了与相关的香草php版本的功能对等性。

否,如果php在所需的阵列中,则必须安装并且至少是指定的版本。正如@Evert所说,HHVM在查询时提供php版本。

检查hhvm依赖关系:https://getcomposer.org/doc/02-libraries.md#platform-包装