当前位置:论坛首页 > Linux面板 > 讨论

[记录] 宝塔 Ubuntu18, PHP7.3 安装memcached 成功记

发表在 Linux面板2019-9-23 18:57 [复制链接] 2 2326

本帖最后由 moonswamp 于 2019-9-23 19:00 编辑

之前有发帖求助:
[url=https: // www.bt.cn/bbs/forum.php?mod=viewthread&tid=37633]https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=37633[/url]

这个问题已经遇到好几次了,一直都没成功,今天终于搜到靠谱的解决方案, 转载过来,防止丢失,也希望能帮助到大家!
注意: 我不能发URL, 所以大家注意下面URL里的空格

我的环境:
Ubuntu 18
PHP7.3

在宝塔后台安装扩展时出现求助帖子里的错误!  于是转为手工操作:

以下内容全部转载自: https: // blog.sunriseydy.top/technology/server-blog/server/linux-install-php-memcached/  
只为备份,防止以后找不到! 进行了一些简单的命令补充,以帮助小白(如我)更好的操作!

==============================================

安装 PHP 的 memcached 扩展总共需要两步:

  • 1. 编译安装 libmemcached 库
  • 2. 编译安装 PHP memcached 扩展


下面就分这两步来进行。

1.编译安装 libmemcached

libmemcached 是一个用来连接 memcached 服务的 C 语言客户端库,有了它 PHP 的 memcached 扩展才能编译成功。
它的项目地址为:https: // launchpad.net/libmemcached,版本发布地址为:https: //l aunchpad.net/libmemcached/+download,下载后解压进入到目录里执行:

下载最新版:
  1. wget https: // launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
复制代码


解压
  1. tar zxvf  libmemcached-1.0.18.tar.gz
复制代码


进入目录:
  1. cd libmemcached-1.0.18/
复制代码


配置编译

  1. ./configure --prefix=/usr/local/libmemcached --with-memcached=/usr/local/memcached
  2. make && make install
复制代码


以上命令逐步执行即可!

后面的两个参数分别是 libmemcached 安装路径和 memcached 的安装路径。这里需要注意的是,如果 GCC 版本大于7,则会出现错误,详情在二楼!。

2.编译安装 PHP memcached 扩展

编译好 libmemcached 之后就可以编译安装 PHP memcached 扩展了。PHP 的扩展有统一的扩展包管理网站,
memcached 扩展的主页为:http: // pecl.php.net/package/memcached,可以在下方找到每个版本的下载链接,同样下载后解压并进入到目录中,执行以下命令:

下载最新版:
  1. wget http: // pecl.php.net/get/memcached-3.1.3.tgz
复制代码


解压
  1. tar zxvf  memcached-3.1.3.tgz
复制代码


进入目录:
  1. cd memcached-3.1.3/
复制代码


配置编译

  1. /www/server/php/73/bin/phpize
  2. ./configure --with-php-config=/www/server/php/73/bin/php-config  --with-libmemcached-dir=/usr/local/libmemcached
  3. make && make install
复制代码


逐条执行以上命令即可(高手请自行操作)!

等待编译完成,然后我们在宝塔的文件目录里查看PHP的扩展目录里,我的目录是
  1. /www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731
复制代码

看到 “memcached.so” 文件,接下来在 php.ini 文件末尾添加一行:
  1. extension=memcached.so
复制代码

即可。

至此安装完成, 二楼是编译libmemcached的错误说明,很多都是在这一步出的问题!!!
使用道具 举报 只看该作者 回复
发表于 2019-9-23 18:59:28 | 显示全部楼层
本帖最后由 moonswamp 于 2019-9-24 09:39 编辑

上面说的环境状况是 UBuntu 18.04, 编译libmemcached会出错, 这应该是宝塔后台安装此扩展出现问题的原因!
自己编译时的错误代码如下:
  1. clients/memflush.cc:42:22: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
  2.    if (opt_servers == false)
  3.                       ^~~~~
  4. clients/memflush.cc:51:24: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
  5.      if (opt_servers == false)
  6.                         ^~~~~
复制代码

如果是宝塔后台安装,很多都会出现下面这种问题,

QQ截图20190923112954.png

这应该是GCC版本造成的问题, 只能选择手工编译(具体步骤见楼上的),在编译的时候,我们只需要修改 clients/memflush.cc 文件
中第 42 和 51 行的问题,网上给出的解决方案就是将这两行的:
  1. if (opt_servers == false)
复制代码
都改为:
  1. if (!opt_servers)
复制代码
然后保存,重新编译即可!!!

使用道具 举报 回复 支持 反对
发表于 2019-9-24 15:04:07 | 显示全部楼层
感谢分享 已优化安装脚本
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术免费分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表