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

时间:2015-04-12 13:20:22

标签: composer-php travis-ci

我正在创建一个用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

我注意到它与我用于本地开发并使用Composer引入的PHPUnit包有关。此版本需要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。但是,当尝试Travis CI尝试测试PHP 5.4时,Composer失败了。这绝对没有意义。如果它在PHP 5.4上崩溃而PHPUnit 4.6需要symfony / yaml 3.0,那么该要求不应该是5.5吗?

我知道我可以将PHPUnit降级到4.5,但我希望保持最新状态,所以我不愿意。

2 个答案:

答案 0 :(得分:0)

该错误消息很简单:Composer无法安装记录在composer.lock文件中的组件,但不符合此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”,除非你确定你需要前沿的包装。目前您没有使用其他软件包,因此没有必要处理不稳定的dev版本的问题。

答案 1 :(得分:0)

删除 composer.lock

这就是我的 .travis.yml

# ...

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

# ...

问题:#2823