【问题标题】:Why won't APC work in PHP v5.5 on Travis-CI?为什么 APC 不能在 Travis-CI 上的 PHP v5.5 中工作?
【发布时间】:2013-05-13 07:12:57
【问题描述】:

所以,我正在编写一个使用 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 的问题?

【问题讨论】:

标签: php apc travis-ci


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    问候。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多