Travis CI在尝试运行composer时为PHP 5.4构建失败



我正在创建一个用PHP编写的开源项目,并开始使用Travis CI在PHP 5.4、5.5、5.6和HHVM版本上进行测试。

5.5、5.6和HHVM的测试通过了,没有任何问题,但我在PHP 5.4上遇到了一个错误。

此处列出了错误:https://travis-ci.org/CodeRichard/simple-config/jobs/58154496

我注意到它与PHPUnit包有关,我使用PHPUnit包进行本地开发,并使用Composer引入。此版本需要symfony/yaml ~2.1|~3.0。在谷歌上搜索了一下之后,我发现管道符号被用作OR符号。这一点让我有点困惑。

当我阅读~2.1|~3.0时,我认为它会尝试拉入一个,如果失败,则拉入另一个。我知道symfony/yaml 3.*需要PHP 5.5.9,而2.*需要5.3.9。

我不明白的是它为什么会失败。它不是应该把symfony/yaml 2.*拉进去吗?

现在,我需要PHPUnit 4.6.*进行开发。PHPUnit的要求是PHP 5.3.3。然而,Composer在尝试Travis CI时失败了。Travis Cl正试图测试PHP 5.4。这完全没有道理。如果它在PHP 5.4上崩溃,而PHPUnit 4.6需要symfony/yaml 3.0,那么要求不应该是5.5吗?

我知道我可以将PHPUnit降级到4.5,但我希望保持最新,所以我宁愿不这样做。

错误消息很简单:Composer无法安装记录在composer.lock文件中的组件,但不符合THIS PHP:的要求

symfony/yaml 3.0.x-dev requires php >=5.5.9

这将不适用于PHP 5.4。

将你的开发机器降级到5.4并再次运行composer update将修复它。

在Travis CI中运行composer update而不是composer install也会修复它。如果您决定这样做,您还应该使用composer update --prefer-lowest运行Travis,以测试您声明的最低版本是否正常工作。

您还应该尽量避免"最低稳定性":"dev",除非您真的确定您需要出血边缘包。目前您没有使用其他软件包,因此没有必要处理开发版本不稳定的问题。

删除composer.lock

这就是我.travis.yml中的内容

# ...
before_script:
- rm composer.lock
- composer install --no-interaction --prefer-source
# ...

问题:#2823

相关内容

  • 没有找到相关文章

最新更新