macos安装memcached及PHP扩展

首先安装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监听的端口了。
到这里安装工作圆满完成。

    原文作者:ESCYezi
    原文地址: https://www.jianshu.com/p/4fe19152bf42
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞