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直接点安装就行了。