我正在创建一个用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,但我希望保持最新状态,所以我不愿意。
答案 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