为什么在Travis-CI的PHP v5.5中没有APC工作?

时间:2013-05-13 07:12:57

标签: php apc travis-ci

所以,我正在编写一个使用APC作为缓存机制的PHP程序。我正在使用TravisCI进行持续集成,并在PHP 5.3,5.4和5.5上进行测试。 APC的测试通过v5.3和5.4,但在5.5上失败,并带有以下消息......

PHP Warning: PHP Startup: Unable to load dynamic library
'/home/travis/.phpenv/versions/5.5.0beta1/lib/php/extensions/no-debug-non-zts-20121212/apc.so' - /home/travis/.phpenv/versions/5.5.0beta1/lib/php/extensions/no-debug-non-zts-20121212/apc.so:
cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library
'/home/travis/.phpenv/versions/5.5.0beta1/lib/php/extensions/no-debug-non-zts-20121212/apc.so' - /home/travis/.phpenv/versions/5.5.0beta1/lib/php/extensions/no-debug-non-zts-20121212/apc.so:
cannot open shared object file: No such file or directory in Unknown on line 0

我的.travis.yml文件看起来像这样

## YAML Template.
---
language: php
php:
  - "5.5"
  - "5.4"
  - "5.3"
before_script: phpenv config-add tests/config.ini
script: phpunit --configuration phpunit.xml

我的tests / config.ini文件看起来像这样

extension="apc.so"

apc.enabled=1
apc.enable_cli=1

任何人都可以解释为什么我可以让APC在v5.3和5.4中工作,但不能在5.5中工作吗?这是PHP的问题,还是Travis的问题?

3 个答案:

答案 0 :(得分:2)

这是一个有效的解决方案,我现在正在成功使用:https://gist.github.com/till/7266839

基本上,这将安装APC for 5.3和5.4,并将安装APCu for 5.5。

答案 1 :(得分:0)

你需要在travis上编译APCu扩展,记住APC在PHP 5.5中不再可用。

您可以尝试使用.travis.yml

printf "\n"| pecl install apcu
echo "extension=apcu.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

问候。

答案 2 :(得分:0)

使用PHP5.5,内置的OpCache正在取代APC字节编码缓存功能。但是,OpCache不是一般的"像MemCache或APC一样缓存。 要恢复旧的非字节码缓存功能,您需要安装APCu,即APC减去字节码缓存。