安装php7的memcached扩展
1.编译安装libmemcached-1.0.18
wget https://launchpadlibrarian.net/165454254/libmemcached-1.0.18.tar.gz
tar -zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached --with-memcached
make && make install
2. 安装php-memcached扩展
php使用memcache的扩展有两个,一个memcache,一个memcached,前者比较老,推荐使用第二个,我们这里以第二个为例:
在github上找到适用于php7的分支(https://github.com/php-memcached-dev/php-memcached/tree/php7),同样使用wget下载zip压缩包,解压缩,进入目录,依次执行下列命令(其中php-config和libmemcached目录根据具体情况设定,可以使用whereis或者find来查找
# 解压
cd php-memcached-php7
# 执行phpize会生成configure文件
/usr/local/php/bin/phpize
# 执行预编译
./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
make
make install
[root@szxxlfhtest02t:/usr/local/src/php-memcached-php7]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20151012
Zend Module Api No: 20151012
Zend Extension Api No: 320151012
[root@szxxlfhtest02t:/usr/local/src/php-memcached-php7]# make install
Libraries have been installed in:
/usr/local/src/php-memcached-php7/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/local/php-7.0.12_fpm/lib/php/extensions/no-debug-non-zts-20151012/
修改php.ini的配置
加上:extension_dir="/usr/local/php7.1/lib/php/extensions/no-debug-non-zts-20160303/"(每个人的路径可能不一样)
extension = "memcached.so
重启php-fpm
3. 修改php.ini文件
(php.ini文件具体位置可以通过phpinfo()函数来查看到),在php.ini文件之中加入下面这句:
# vim /usr/local/php-7.0.12_fpm/lib/php.ini
extension_dir="/usr/local/php-7.0.12_fpm/lib/php/extensions/no-debug-non-zts-20151012/"
extension=memcached.so
[root@szxxlfhtest02t:~]# php -m
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
dba
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
ldap
libxml
mbstring
mcrypt
memcache
memcached
4.测试是否安装成功
[root@szxxlfhtest02t:/data/www/vhosts/cmstest.chinasoft.com/httpdocs]# cat mem.php
<?php
$mem = new Memcached(); //创建一个memcached对象
$mem->addServer('127.0.0.1',11211); //连接memcached
$mem->set("key","test");//设置一个变量到内存中,名称是key 值是test
$get_value = $mem->get('key'); //从内存中取出key的值
if($mem->getResultCode() == Memcached::RES_NOTFOUND) //如果该名称的变量没有设置
{
echo 'not set!';
}
else
{
echo $get_value;
}
***************************
[root@newcms:/data/www/cms/cmsx.chinasoft.com.wx/httpdocs/public]# cat /usr/local/nginx/conf/cms.d/cmsx.chinasoft.com.wx.conf
server {
listen 80;
server_name cmsx.chinasoft.com.wx cmsx.chinasoft.com.wx.wx;
access_log /data/www/logs/nginx_log/access/cmsx.chinasoft.com.wx_access.log main ;
access_log on;
error_log /data/www/logs/nginx_log/error/cmsx.chinasoft.com.wx_error.log ;
root /data/www/cms/cmsx.chinasoft.com.wx/httpdocs/public/;
index index.html index.shtml index.php ;
include rewrite.d/cmsx.chinasoft.com.wx.conf ;
error_page 404 403 /404.html;
access_log on;
#location / {
# expires -1;
# proxy_pass http://php_pool;
# include proxy_params;
#}
#location / {
# index index.php index.html index.htm;
# try_files $uri $uri/ /index.php?$query_string;
#}
#location ~ \.php$ {
# fastcgi_pass unix:/tmp/php-cgi.sock;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# include fastcgi_params;
#}
location / {
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite . /index.php last;
}
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}