前面在服务器上安装了 Redis,但要想使用还得装一个 phpredis 扩展。

查看codeigniter 3.1缓存驱动器,找到 github 托管的代码Redis 服务器和 phpredis 扩展,安装文档install.markdown

pecl 直接安装:

更新 pecl 数据源(不建议执行该操作)

见鬼的操作,我一开始是可以安装的,只不过安装失败了,
然后尝试以下指令,再次尝试安装,直接找不到包了,pecl 命令直接用不了了。

pecl channel-update pecl.php.net

pecl 安装

pecl install redis

若 pecl 没有问题的话,可以直接跳到 安装 igbinary(安装 redis 会报错)。

我的机子是缺这个库的,不缺 igbinary,pecl 又没问题的童鞋,应该会直接安装成功。

我的 pecl 有问题,提示:No releases available for package "pecl.php.net/redis"

各种查询兜兜转转的,让我升级 php 版本,做不了,可能之后会考虑,现在我只想能够使用。

下载 pecl 包安装

下载 phpredis 安装包

curl 'https://pecl.php.net/get/redis-4.1.1.tgz' -o redis-4.1.1.tgz

我用的指令是 wget 'https://pecl.php.net/get/redis-4.1.1.tgz'

pecl 安装

pecl install redis-4.1.1.tgz

报错

checking for igbinary includes... configure: error: Cannot find 
ERROR: `/tmp/pear/temp/redis/configure --enable-redis-igbinary=yes --enable-redis-lzf=yes' failed

当时没有立即去查问题解决方案,因为我看到安装文档下面有

RHEL / CentOS Installation of the php-pecl-redis package, from the EPEL repository:
yum install php-pecl-redis

抱着试试看态度执行了一下,OK了,但怎么都找不到扩展文件 so,也没办法添加使用。不太懂安装到那里去了。

没办法,回到 pecl install redis

根据错误提示: checking for igbinary includes... configure: error: Cannot find igbinary.h 找解决方案。

安装 igbinary

它也是 php 的一个扩展,但前面碰到了 pecl 用不了的问题,只能下载包,然后解压,编译安装。

curl 'https://github.com/igbinary/igbinary/archive/master.zip' -o igbinary.zip
unzip igbinary.zip
cd igbinary
phpize
./configure
make
make test
make install

一路畅通!

配置 php.ini 使 igbinary 生效

记得重启 php-fpm (如果没有这个服务,重启服务器 service httpd/nginx restart)

; Load igbinary extension
extension=igbinary.so
; Use igbinary as session serializer
session.serialize_handler=igbinary
; Enable or disable compacting of duplicate strings
; The default is On.
igbinary.compact_strings=On

然后再次安装 redis

pecl install redis-4.1.1.tgz

成功!

再次配置 php.ini,添加 redis.so

extension="redis.so"

重启服务器

service httpd/nginx restart
echo phpinfo();

CTRL + F redis 看到模块已经安装好了,或者 php -m 也可以看到安装好的模块。

附:
igbinary github