2012-11-01 122 views
1

运行命令pecl install mysqlnd_qcAPC安装缓存启用我收到以下错误:错误编译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:

由于我没有设法编译mysqlnd_qc与APC,我试着用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

好找到了解决办法:

这里是我做过什么:

让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' nkage)

make test 
sudo make install 

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

phpize 
aclocal 

运行相同./configure中的phpinfo和添加这些选项:

--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必须更换。
0

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

所以如果你真的需要mysqlnd_qc与apc(你呢?),你必须得到php src,并用所需的模块编译它 。

如果你不需要它,只需在pecl install mysqlnd_qc问你时说“不”或返回。

+0

PECL安装,至少在我的Linux版本并编译代码(使用make和gcc),并创建上飞这样的文件。我需要APC,否则查询缓存将只影响正在运行的进程,这几乎是无用的.... – SimonW