所以,我正在编写一个使用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的问题?
答案 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减去字节码缓存。