首页 文章

Docker容器中的Couchbase PHP SDK

提问于
浏览
0

我有一个运行PHP-FPM 5.5的Docker容器,我想确保它可以访问Couchbase SDK . 我在Docker之外工作,并不能真正想象Docker会如何干扰,但我似乎遇到了一个“可能”与docker相关的问题:

我的Docker容器在 Ubuntu 14.04 下运行并包含以下安装(在安装PHP之后):

# Install Couchbase C-library and PECL extension
RUN wget -O/etc/apt/sources.list.d/couchbase.list http://packages.couchbase.com/ubuntu/couchbase-ubuntu1404.list \
        && wget -O- http://packages.couchbase.com/ubuntu/couchbase.key | sudo apt-key add - \
        && apt-get update \
        && apt-get install -y --no-install-recommends pkg-config libcouchbase2-libevent libcouchbase-dev libmemcached-dev php-pear php5-dev make \
        && pecl config-set php_ini /app/conf/php.ini \
        && pecl install couchbase --alldeps \
        && pecl install memcached --alldeps \
        && { \
            echo "; Couchbase PHP SDK"; \
            echo "extension=/usr/lib/php5/20121212/couchbase.so"; \
        } > /etc/php5/fpm/conf.d/30-couchbase.ini \
        && cp /etc/php5/fpm/conf.d/30-couchbase.ini /etc/php5/cli/conf.d \
        && { \
            echo "; Memcached PHP SDK"; \
            echo "extension=/usr/lib/php5/20121212/memcached.so"; \
        } > /etc/php5/fpm/conf.d/30-memcached.ini \
        && cp /etc/php5/fpm/conf.d/30-memcached.ini /etc/php5/cli/conf.d

这应该为 CouchbaseMemcached 支持安装C库和PECL扩展 . 从许多方面来看,它似乎:

  • php -m 确实包含已安装的这些模块,

  • phpinfo() 报告其配置如下:

couchbase

memcached

但是,每当我尝试实例化一个 CouchbaseMemcached 类时都找不到该类 . 所以,如果我运行以下程序:

<?php
    $foo = new Couchbase();
    $bar = new Memcached();
    print_r($foo);
    print_r($bar);
?>

它给了我以下错误:

PHP致命错误:第2行的/app/test.php中找不到类'Couchbase'


UPDATE :然而,事实证明,虽然Couchbase不起作用,但Memcached确实如此 . 不确定这是否有助于或伤害故障排除,但Couchbase似乎是唯一的痛点 .

1 回答

  • 2

    看来,答案与Couchbase从1.x转向2.x SDK有关,在PHP的情况下,这意味着不再有一个名为“Couchbase”的类 .

    长期答案将是迁移到这个新的API;看起来确实需要一些工作 . 然而,在短期内,我需要一个适用于我现有Couchbase的解决方案,这非常简单......只需安装正确版本的Couchbase:

    pecl install couchbase-1.2.2
    

    这就是我需要的一切 . 您可以在以下位置查看此设置的工作Docker:lifegadget/docker-php

    注意:从PECL获得的SDK的默认版本现在为2.0,因此如果您没有指定版本,则会获得版本2.x.

相关问题