首页 > Linux, PHP > php-memcached扩展安装

php-memcached扩展安装

2017年11月3日 发表评论 阅读评论

由于服务器上的php-memcached的序列化处理使用的是igbinary,而本地使用的是php默认的,在本地跑线上环境代码的时候就遇到问题了。具体是查看错误日志看到如下信息:

'ErrorException' with message 'Memcached::get(): could not unserialize value, no 
igbinary support'

查看memcached的igbinary support发现值是”no”,由于以前没自己动手搞过这块的东西。看了官方配置手册以后,以为只需要在配置文件中把”memcached.serializer”的配置设置为igbinary就可以了那。但是修改以后发现并没有作用。

接下来查看了一下扩展的编译参数,发现有个选项是”–enable-memcached-igbinary”,另外2个类似的参数分别是”–enable-memcached-json” 和”–enable-memcached-msgpack”.现在就找到了问题所在,需要重新重新编译memcached扩展以支持igbinary。

开始编译,编译参数如下:

./configure --enable-memcached --enable-memcached-igbinary --with-php-config=
/usr/local/bin/php-config

但是很不幸,并没有如期待的那样编译成功,遇到如下错误:

"./php_memcached.h:23:10: fatal error: 'Zend/zend_smart_str.h' file not found
#include "Zend/zend_smart_str.h""

搜索了整个电脑硬盘,也没有找到这个头文件。打开php-memcached在github上的项目地址,发现它在readme里面说3.x版本是支持php7的,而php5.2-5.6需要使用2.x版本,所以就从github上的release历史里面下载了php-memcached2.2版本,当然从php官方地址也是可以下载到相应的版本的。我特地下载了php7.1.11的源码查看了一下,果然有缺失的头文件。

接下来安装上面的编译参数再次进行编译,就成功了。

分类: Linux, PHP 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
您必须在 登录 后才能发布评论.