为什么APC在Travis-CI上的PHP v5.5中不起作用?



所以,我正在编写一个PHP程序,使用APC的缓存机制。我使用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的问题?

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

这将安装5.3和5.4版本的APC和5.5版本的APCu。

你需要在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*||"`

问候。

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

最新更新