1

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

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 Query Cache 是什么意思?

它是如何完成的?


更新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(我猜也是RedHatand CentOS)上运行,则可以使用rpm

sudo yum install php-pecl-mysqlnd-qc

更新 2:

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

4

2 回答 2

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

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

phpize
aclocal

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

--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必须更换。
于 2012-12-05T08:39:07.553 回答
0

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

因此,如果您真的需要带有 apc 的 mysqlnd_qc(是吗?),您必须获取 php src,并使用所需的模块对其进行编译。

如果您不需要它,请在 pecl install mysqlnd_qc 询问您时说不或按回车键。

于 2012-11-01T15:44:15.393 回答