背景
最近为PhalApi添加了APC的缓存功能,需要测试一下,但发现服务器环境缺少apcu扩展,所以需要安装一下。虽然安装扩展的方式都是比较相似的,通常都是在PHP的安装包源代码的 ./ext 目录下找到对应的扩展,然后安装配置即可。但问题是:1、ext的目录下没有apcu的源代码;2、网上找了一些帮助,好像不太适用。所以这里稍微整理了一下。
下载APC源代码
首先,去到:http://pecl.PHP.net/package/APC 下载源代码压缩包。
安装扩展
一开始,我下载了APC-3.1.9.tgz这个包,但按网上的教程,却出现以下错误:
- [root ext]# cd APC-3.1.9
- [root APC-3.1.9]# /usr/local/PHP/bin/PHPize ./configure --enable-apc --enable-apc-mmap --with-PHP-config=/usr/local/PHP/bin/PHP-config
- Configuring for:
- PHP Api Version: 20090626
- Zend Module Api No: 20090626
- Zend Extension Api No: 220090626
- config.m4:180: warning: AC_CACHE_VAL(PHP_APC_GCC_ATOMICS,...): suspicIoUs cache-id,must contain _cv_ to be cached
- ../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
- ../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
- config.m4:180: the top level
- config.m4:180: warning: AC_CACHE_VAL(PHP_APC_GCC_ATOMICS,must contain _cv_ to be cached
- ../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
- ../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
- config.m4:180: the top level
上面命令写错了,应该分为两行命令来操作,即:
重新下载了APC-3.1.6.tgz这个包,并换一种操作方式,就可以了。以下是相关的过程:
- # wget http://pecl.PHP.net/get/APC-3.1.6.tgz
- # tar -xzvf ./APC-3.1.6.tgz
- # cd APC-3.1.6
- [root@iZ94hkyutskZ APC-3.1.6]# ./configure --enable-apc --enable-apc-mmap --with-PHP-config=/usr/local/PHP/bin/PHP-config
- ......
- creating libtool
- appending configuration tag "CXX" to libtool
- configure: creating ./config.status
- config.status: creating config.h
- # make
- ......
- Build complete.
- Don't forget to run 'make test'.
- # make install
- Installing shared extensions: /usr/local/PHP/lib/PHP/extensions/no-debug-non-zts-20090626/
到这里,扩展就生成好了。
PHP.ini的配置
接下来就是配置:
添加以下配置:
- extension=apc.so
- apc.enabled = 1
- apc.cache_by_default = on
- apc.shm_segments = 1
- apc.shm_size = 32M
- apc.ttl = 600
- apc.user_ttl = 600
- apc.num_files_hint = 0
- apc.write_lock = On
如果@R_404_304@:
则要把上面的扩展复制到对应的位置:
最后,可以这样看到APC扩展已安装成功。
- # PHP -m | grep apc
- apc
注意:PHP-fpm的配置
再进一步,安装APCU扩展
和APC类似,下载地址为:http://pecl.PHP.net/package/APCu
但下了几个包,发现和APC-3.1.6.tgz这个包,能兼容不出错的,试了一下,可以是:apcu-4.0.0.tgz 这个包。
依然是下面几步操作:
接下来,继续是配置重启即可,这里不再赘述。
但发现,添加了以下配置后:
- extension=apcu.so
会出现这样的警告:
最终,去掉apc.so即可。而且官方好像也不推荐使用apc了。最后配置如下:
- ;extension=apc.so
- extension=apcu.so
- apc.enabled = 1
- apc.cache_by_default = on
- apc.shm_segments = 1
- apc.shm_size = 32M
- apc.ttl = 600
- apc.user_ttl = 600
- apc.num_files_hint = 0
- apc.write_lock = On