解决宝塔Linux面板安装memcached失败的问题

最近新开了一个服务器,但是在宝塔安装环境时,发现 php 的 memcached 扩展始终安装失败,开始以为是机器的内存不够(我的小机是1G内存)查看了日志提示:
checking for libmemcached location… configure: error: Unable to find memcached.h under /usr/local/libmemcached
make: *** No targets specified and no makefile found. Stop.

后发现是 libmemcached 编译失败,导致无法编译安装 memcached 扩展。于是尝试手动编译 libmemcached。

## 编译安装 libmemcached

libmemcached 是一个用来连接 memcached 服务的 C 语言客户端库,有了它 PHP 的 memcached 扩展才能编译成功。 项目地址为:https://launchpad.net/libmemcached 目前版本是1.0.18.编译前先看下面粗体黑字,重点!!

wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar -xzvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached --with-memcached=/usr/local/memcached
make && make install

编译的两个参数分别是 libmemcached 安装路径和 memcached 的安装路径。另外这里需要注意的是,如果 GCC 版本大于7,则会出现错误

clients/memflush.cc:42:22: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
   if (opt_servers == false)
                      ^~~~~
clients/memflush.cc:51:24: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
     if (opt_servers == false)

解决方法是修改libmemcached-1.0.18/clients/memflush.cc 这个文件,把文件中第 42 和 51 行的

if (opt_servers == false)

改成

if (!opt_servers)

就可以正常编译 libmemcached 了。

之后在宝塔Linux面板,在软件管理->php设置->安装扩展选择memcached直接点安装就行了。

dark
sans