Press "Enter" to skip to content

php7.3编译安装memcached扩展

Last updated on 2019-06-12

安装memcached需要先安装libmemcached扩展 相信大家都被坑过,在此记录一下

下载地址是在这里:https://launchpad.net/libmemcached/+download

wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz

没有wget  centos执行 yum install -y wget    ubuntu执行apt-get install wget -y

tar -xvzf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --with-memcached --disable-memcached-sasl
make && make install

这一步应该没什么大问题,缺少组件直接yum 或者apt-get安装就行了

安装memcached扩展

下载地址: http://pecl.php.net/package/memcached

wget http://pecl.php.net/get/memcached-3.1.3.tgz
tar -zxvf memcached-3.1.3.tgz
cd memcached-3.1.3

首先使用phpize生成文件 如果php加了环境变量一般直接执行phpize就行了

phpize

如果找不到phpize    使用查找命令

find / -name phpize

搜索到文件,我的在/usr/local/bin/phpize目录,然后执行

/usr/local/bin/phpize

不知道php-config在哪个目录 使用find方法

find / -name php-config

这里需要将刚才安装的libmemcached的目录关联

find / -name libmemcached

找到安装目录在 /usr/local/include/libmemcached   目录下有memcached.h文件才是正确目录

开始安装

./configure --with-php-config=/usr/local/bin/php-config  --with-libmemcached-dir=/usr/local/include/libmemcached  --disable-memcached-sasl

大坑来了

checking for libmemcached location... configure: error: Unable to find memcached.h under /usr/local/include/libmemcached

明明memcached.h在此目录下

历经千辛万苦找到答案,通过查看编译配置文件config.m4,可以看到配置文件中 235行

由于楼主不懂shell,结合报错
Unable to find memcached.h under /usr/local/include/libmemcached
得知这个$PHP_LIBMEMCACHED_DIR就是我们写的目录,而编译文件中的test  ! -f是指向

$PHP_LIBMEMCACHED_DIR/include/libmemcached/memcached.h

所以我们的指向目录

--with-libmemcached-dir=/usr/local/include/libmemcached

就找到

/usr/local/include/libmemcached/include/libmemcached/memcached.h

这个目录下面了,故而找不到!!!

所以,我们编译的时候只需要将目录指到inlcude的上一层,原始目录

/usr/local/include/libmemcached

只需要写/usr/local就行了!!

接下来在执行

./configure --with-php-config=/usr/local/bin/php-config --enable-memcached --with-libmemcached-dir=/usr/local --disable-memcached-sasl
make
make install

提示 Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/ 安装成功
在php.ini 中添加

extension=memcached.so

查看php.ini位置

php -i|grep php.ini

如果php命令不存在是因为你的php目录未加到环境变量中

重启php

执行php -m 查看扩展是否成功安装 或者在页面查看phpinfo()

 

安装memcached客户端

由于我使用的是docker 安装的memcached,这里就简单介绍下docker的memcached使用方式

memcached镜像下载地址: https://hub.docker.com/_/memcached

docker pull memcached
docker run --name my-memcache -d memcached memcached -m 64

使用docker ps查看运行状态 默认的端口是11211,可以使用主机的telnet命令测试

由于我没有映射端口 所以需要使用容器的内部ip

使用docker inspect 容器id或者names

docker inspect my-memcached

使用telnet命令测试能否连接成功

telnet 172.17.0.5 11211

出现以上内容代表成功

代码测试php是否能够连接memcached

<?php
$mem = new Memcached();
$mem->addServer('172.17.0.5',11211);
if($mem->add("mystr","this is a memcache test!",3600)){
echo '原始数据缓存成功!';
}else{
echo '数据已存在:'.$mem->get("mystr");
}

访问两次页面 出现

数据已存在:this is a memcache test!

连接成功

Leave a Reply

Your email address will not be published. Required fields are marked *