Travis CI 在尝试 运行 composer 时构建 PHP 5.4 失败
Travis CI build fails for PHP 5.4 while trying to run composer
我正在创建一个用 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.* 进行开发。 PHP单元的要求是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,但我希望保持最新状态,所以我宁愿不这样做。
该错误消息很简单:Composer 无法安装已记录在 composer.lock
文件中但不符合此要求的组件 PHP:
symfony/yaml 3.0.x-dev requires php >=5.5.9
这不适用于 PHP 5.4.
将您的开发机器降级到 5.4 并再次 运行 composer update
将修复它。
运行 composer update
而不是 Travis CI 中的 composer install
也会修复它。如果您决定这样做,您还应该 运行 Travis 和 composer update --prefer-lowest
来测试您声明的最低版本是否正常工作。
你也应该尽量避免 "minimum-stability":"dev",除非你真的确定你需要最新的软件包。目前您没有使用其他包,所以没有必要处理不稳定的开发版本问题。
删除composer.lock
这是我的 .travis.yml
# ...
before_script:
- rm composer.lock
- composer install --no-interaction --prefer-source
# ...
问题:#2823
我正在创建一个用 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.* 进行开发。 PHP单元的要求是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,但我希望保持最新状态,所以我宁愿不这样做。
该错误消息很简单:Composer 无法安装已记录在 composer.lock
文件中但不符合此要求的组件 PHP:
symfony/yaml 3.0.x-dev requires php >=5.5.9
这不适用于 PHP 5.4.
将您的开发机器降级到 5.4 并再次 运行 composer update
将修复它。
运行 composer update
而不是 Travis CI 中的 composer install
也会修复它。如果您决定这样做,您还应该 运行 Travis 和 composer update --prefer-lowest
来测试您声明的最低版本是否正常工作。
你也应该尽量避免 "minimum-stability":"dev",除非你真的确定你需要最新的软件包。目前您没有使用其他包,所以没有必要处理不稳定的开发版本问题。
删除composer.lock
这是我的 .travis.yml
# ...
before_script:
- rm composer.lock
- composer install --no-interaction --prefer-source
# ...
问题:#2823