php-memcached 扩展升级小记

栏目: 数据库 · 发布时间: 6年前

内容简介:php-memcached扩展是基于libmemcached开发的,核心的功能都来源于libmemcached,libmemcachd是一个C语言开发的库,这个库比较稳定,最新的版本是2014年发布的1.0.18。php-memcached不管是源代码编译还是包安装,基本上都是由PECL(https://pecl.php.net/package/memcached,/usr/share/doc/php-memcached/README.markdown)提供的,主要分为两个版本:至于什么是PECL,它其实

今天无意中在工作邮箱翻到了一封邮件,说的是2017年底php-memcached扩展的一个安全漏洞(https://github.com/php-memcached-dev/php-memcached/issues/339),由于当时线上业务并没受影响,所以就没太关注。今天突然发现自己开发机使用的还是php-memcache扩展,所以就升级了一下(centos/apache/php5.6环境)。

php-memcached

php-memcache

扩展都是 phpmemcached 客户端扩展,仅有一字之差,建议使用php-memcached扩展,关于两者的比较,后续有机会我再学习。在开发机升级后,就顺带在自己的阿里云ECS上也升级了下(ubuntu/php7.1),事情虽小,但自己也学习了很多,主要包括pecl、libmemcachd、phpize等知识,然后写下了此文。

libmemcachd和php-memcached版本

php-memcached扩展是基于libmemcached开发的,核心的功能都来源于libmemcached,libmemcachd是一个 C语言 开发的库,这个库比较稳定,最新的版本是2014年发布的1.0.18。

php-memcached不管是源代码编译还是包安装,基本上都是由PECL(https://pecl.php.net/package/memcached,/usr/share/doc/php-memcached/README.markdown)提供的,主要分为两个版本:

  • 3.x版本:提供给php5.6以上的版本(包括php7)使用,依赖libmemcached 1.x以上的版本。

  • 2.x版本:提供给php5.6一下的版本使用,依赖libmemcached 0.44以上的版本。

至于什么是PECL,它其实类似于PHP的扩展软件安装库,也类似于apt-get这样的软件安装工具,只是PECL安装的是php扩展(大部分是.so文件)。

PECL安装php-memcached

在开发机上,我尝试使用pecl安装,由于php环境是5.6,所以安装的是php-memcached 2.x版本,运行一个命令即可:

# 自动安装libmemcached依赖
$ pecl install php-memcached-2.0.0

这个命令隐藏了很多细节,相当于执行如下指令:

# 也可以自行去github下载(比如https://github.com/php-memcached-dev/php-memcached/releases/tag/r2.1.0)
$ pecl download memcached-2.0.0.tgz 
$ tar xvf memcached-2.0.0.tgz
$ cd memcached-2.0.0
$ phpize
# 如果libmemcached没有安装,需要安装
$ ./configure --with-libmemcached-dir=/usr
$ make 
$ make install

安装完成后,如果下列提示:

configuration option “php_ini” is not set to php.ini location You should add “extension=memcached.so” to php.ini

需要自行在php.ini中添加extension=memcached.so,或者在专门的配置文件增加扩展so文件,比如:

$ echo "extension=memcached.so" >>  /etc/php.d/memcached.ini

apt-get安装php-memcached

一般情况下,我喜欢使用包安装方式安装软件,在自己的ECS我就采用apt-get安装php-memcached。

输入下列命令搜索php-memcached:

$ apt-cache  show php7.1-memcached

会提示:

N: Can't select versions from package 'php7.1-memcached' as it is purely virtual
N: No packages found

间接说明php-memcached其实挺简单的,不用刻意根据php版本寻找,直接输入以下命令即可:

$ apt-cache policy  php-memcached

输出如下:

*** 3.0.4+2.2.0-3+ubuntu14.04.1+deb.sury.org+1 0
    990 http://ppa.launchpad.net/ondrej/php/ubuntu/ trusty/main amd64 Packages
    100 /var/lib/dpkg/status

然后查看该扩展的信息:

$ apt-cache show php-memcached

关键输出如下:

Maintainer: Debian PHP PECL Maintainers <team+php-pecl@tracker.debian.org>
Architecture: amd64
Version: 3.0.4+2.2.0-3+ubuntu14.04.1+deb.sury.org+1
Provides: php5.6-memcached, php7.0-memcached, php7.1-memcached, php7.2-memcached, php7.3-memcached

可见,这个安装包还是很智能的,php5.6都可以使用该包安装php-memcached扩展。

然后安装就很简单了:

$ apt-get install php-memcached

它会自动安装libmemcachd扩展,在我的ECS安装的是php-memcached 3.0.4版本,libmemcachd采用最新的1.0.18版本。

安装后,会自行配置对应SAPI的memcached.ini文件,也会自动重启对应的apache或nginx,非常方便,完全是自动化安装。

如果感兴趣也可以输入下列命令查看php-memcached安装了那些文件:

$ dpkg -L php-memcached

我最近写了一本新书 《深入浅出HTTPS:从原理到实战》 ,本书github地址 https://github.com/ywdblog/httpsbook,大家可以一起讨论。

本书豆瓣地址 https://book.douban.com/subject/30250772/(或点击文末“阅读原文”),如果你读了本书,还请写个评论。

也可以关注我的公众号(ID: yudadanwx, 虞大胆的叽叽喳喳

)。

php-memcached 扩展升级小记


以上所述就是小编给大家介绍的《php-memcached 扩展升级小记》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

跨越鸿沟

跨越鸿沟

[美] 杰弗里·摩尔(Geoffrey A. Moore) / 赵娅 / 机械工业出版社 / 2009-1 / 36.00元

在真正涉足高科技领域之前,你有必要读一读这本书——在这个节奏飞快、竞争激烈的技术竞技场上,这本书绝对能够帮助你更容易地获得成功。 ——威廉姆·劳森 罗盛软件公司董事会主席兼CEO 最近40年来,本书对高科技营销各个方面所做出的贡献远远超过了其他任何相关书籍。如今已经有无数企业和大学分别在自己的运营和教学过程中引入了鸿沟思想,如果你还不是这些企业或大学中的一员,你可能就要担心自己的未来了......一起来看看 《跨越鸿沟》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换