`composer install` 运行 on `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 被排除在外。相反,这个选择似乎意味着 if 存在 php,它必须满足版本约束,但如果只有 hhvm,则不会申请。

这是怎么回事?如果是这样,我如何指定包与 hhvm 不兼容?

HHVM 发出 PHP_VERSION 常量。我相当确定 composer 只是使用这些常量来计算这里的版本。

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

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

检查 hhvm 依赖项:https://getcomposer.org/doc/02-libraries.md#platform-packages

您可以使用 conflict 选项来说明您的包与 HHVM 冲突。这看起来像

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

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