2

所以,我正在编写一个使用 APC 作为缓存机制的 PHP 程序。我正在使用 TravisCI 进行持续集成并在 PHP 5.3、5.4 和 5.5 上对其进行测试。V5.3 和 5.4 的 APC 测试通过,但在 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 的问题?

4

3 回答 3

2

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

本质上,这将为 5.3 和 5.4 安装 APC,并将为 5.5 安装 APCu。

于 2014-01-10T16:27:10.137 回答
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*||"`

问候。

于 2013-07-20T01:03:40.460 回答
0

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

于 2013-11-06T11:09:58.443 回答