使用apc编译mysqlnd_qc时出错

时间:2012-11-01 15:18:58

标签: php memcached apc amazon-rds mysqlnd

运行命令pecl install mysqlnd_qc以安装启用APC的缓存我收到以下错误:

configure: error: APC is onlysupported if both APC and MySQL Query Cache are compiled statically
ERROR: `/var/tmp/mysqlnd_qc/configure --enable-mysqlnd-qc-apc=yes --enable-qc-memcache=no --enable-qc-sqlite=no' failed

如果没有启用APC,它编译得很好......

PHP版本:5.3.17

在Amazon RDS上运行。

静态编译APC和MySQL查询缓存是什么意思?

怎么做?


更新1:

由于我没有设法用APC编译mysqlnd_qc,我尝试用memcached编译它。 这是一个有趣的问题。 ./configure命令无法识别peclmemcache提供的选项。我发现选项输入错误了......

所以当我要求选项时我杀了pecl安装并自己运行以下命令:

sudo ./configure --enable-mysqlnd-qc-memcache --with-libmemcached-dir=/usr/
sudo make
sudo make install

所以memcached现在可以了。

如果在Fedora上运行(我猜也是RedHatCentOS),可以使用rpm

sudo yum install php-pecl-mysqlnd-qc

更新2:

我设法用APC编译,请参阅下面的详细答案。

2 个答案:

答案 0 :(得分:2)

很好地找到了解决方案:

这是我做的:

获取php 5.3.17:

wget https://github.com/php/php-src/archive/PHP-5.3.17.zip
unzip PHP-5.3.17.zip

获取mysqlnd_qc:

wget http://pecl.php.net/get/mysqlnd_qc-1.1.1.tgz
tar -zxvf http://pecl.php.net/get/mysqlnd_qc-1.1.1.tgz
mkdir -p php-src-PHP-5.3.17/ext/mysqlnd_qc
cp -R mysqlnd_qc-1.1.1/* php-src-PHP-5.3.17/ext/mysqlnd_qc

获取APC:

wget http://pecl.php.net/get/APC-3.1.13.tgz
tar -xzvf APC-3.1.13.tgz
mkdir -p php-src-PHP-5.3.17/ext/apc
cp -R APC-3.1.13/* php-src-PHP-5.3.17/ext/apc/

编译:(可能不需要在其他系统上全部使用)

sudo yum install bison
sudo yum install libxml2 libxml2-devel
sudo yum install autoconf213
sudo yum install httpd-devel
sudo yum install bzip2 lbzip2 bzip2-libs bzip2-devel

export PHP_AUTOCONF=/usr/bin/autoconf-2.13

./buildconf --force
make clean && make

(对我而言,链接失败并且必须将'-lpthread'添加到链接中)

make test
sudo make install

我还使用了以下两个命令,但我不记得是什么以及何时......

phpize
aclocal

运行与phpinfo相同的./configure并添加以下选项:

--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-qc --enable-mysqlnd-qc-apc --enable-mysqlnd --enable-apc --enable-static=apc
  • 必须更换所有--with

答案 1 :(得分:0)

看起来你必须从源代码编译,给出正确的.configure选项。 pecl install只给你一个.so,这是一个动态模块扩展,你可以通过php.ini

添加

所以,如果你真的需要apc的mysqlnd_qc(是吗?),你必须得到php src,然后编译它 使用所需的模块。

如果你不需要它,只要说不,或者在pecl install mysqlnd_qc问你时回复。