linux 下安装 phpredis 扩展
前面在服务器上安装了 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
也可以看到安装好的模块。