我有一个运行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
这应该为 Couchbase 和 Memcached 支持安装C库和PECL扩展 . 从许多方面来看,它似乎:
-
php -m
确实包含已安装的这些模块, -
和
phpinfo()
报告其配置如下:
但是,每当我尝试实例化一个 Couchbase
或 Memcached
类时都找不到该类 . 所以,如果我运行以下程序:
<?php
$foo = new Couchbase();
$bar = new Memcached();
print_r($foo);
print_r($bar);
?>
它给了我以下错误:
PHP致命错误:第2行的/app/test.php中找不到类'Couchbase'
UPDATE :然而,事实证明,虽然Couchbase不起作用,但Memcached确实如此 . 不确定这是否有助于或伤害故障排除,但Couchbase似乎是唯一的痛点 .
1 回答
看来,答案与Couchbase从1.x转向2.x SDK有关,在PHP的情况下,这意味着不再有一个名为“Couchbase”的类 .
长期答案将是迁移到这个新的API;看起来确实需要一些工作 . 然而,在短期内,我需要一个适用于我现有Couchbase的解决方案,这非常简单......只需安装正确版本的Couchbase:
这就是我需要的一切 . 您可以在以下位置查看此设置的工作Docker:lifegadget/docker-php