首先安装memcached
brew install memcached
由于PHP对memcached的支持是由基于libmemached的PHP memcached扩展实现的,首先到https://libmemcached.org/libMemcached.html下载llibmemcached包。
解压后进入文件夹进行编译
./configure
make
接下来问题来了,编译过程中会出现两个error
libmemcached/byteorder.cc:66:10: error: use of undeclared identifier 'ntohll'
return ntohll(value);
^
libmemcached/byteorder.cc:75:10: error: use of undeclared identifier 'htonll'
return htonll(value);
这时需要在libmemcached/byteorder.cc
的
#include "mem_config.h"
#include "libmemcached/byteorder.h"
后面加上
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
这时make clean
一下,清除上次make产生的文件,再次make
这时会出现另一个error
clients/memflush.cc:42:19: error: comparison between pointer and integer ('char *' and 'int')
if (opt_servers == false)
clients/memflush.cc:51:21: error: comparison between pointer and integer ('char *' and 'int')
if (opt_servers == false)
解决办法:
把 clients/memflush.cc
中的两处opt_servers == false
的false改成NULL
一般来说改了这两处就没有其他问题了,如此修改的原因参见https://blog.longqiuhong.com/archives/132
接下来
make clean
make
make install
等待滚屏。
libmemcached安装完成,接下来安装php-memcached扩展
网上有些文章使用自行下载memcached扩展包然后编译安装的方式,比较麻烦,这里使用更简单的方法
pecl install memcached
pecl是一个PHP扩展库,使用pear的包管理器,可以帮助我们快速安装php扩展
接下来,pecl将会询问libmemcached的所在路径,如果安装正确,输入/usr/local
就可以自动地安装好memcached扩展了。
如果之前的编译安装没成功,可能会提示找不到memcached.h
这时需要重复尝试
make clean
make
make install
pecl install memcached
笔者也是尝试了几次才成功。
接下来开启我们的memcached服务
brew services start memcached
查看memcached监听的端口,一般是11211
lsof | grep memcached
其中有两行最后标有(LISTEN)
字样,这里的端口号就是memcached监听的端口了。
到这里安装工作圆满完成。