博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【redis学习二】多php版本下phpredis扩展安装
阅读量:6836 次
发布时间:2019-06-26

本文共 3119 字,大约阅读时间需要 10 分钟。

背景:安装完redis之后,需要安装phpredis扩展,才能让php操作redis;本机有多个php版本,安装过程中遇到的坑分享一下。

一 下载

git上下载redis的扩展包

git clone https://github.com/nicolasff/phpredis

二 挂载和configure

在shell中输入 phpize 【注意:多个php版本的时候需要指定】

./configure

【phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块】

注意:(phpize 如果包含多个php,必须指定位置)

cuihuan:phpredis cuixiaohuan$ ../php/bin/phpizeConfiguring for:PHP Api Version:         20121113Zend Module Api No:      20121212Zend Extension Api No:   220121212Cannot find autoconf. Please check your autoconf installation and the$PHP_AUTOCONF environment variable. Then, rerun this script.

报错的话需要安装:brew install autoconf [phpize 报错] 否则没有phpize

[work@cuixiaozhuai phpredis]$ ../php/bin/phpize        Configuring for:PHP Api Version:         20041225Zend Module Api No:      20060613Zend Extension Api No:   220060519[work@cuixiaozhuai phpredis]$  ./configure --with-php-config=/home/work/thirdparty/php5/bin/php-config

当存在多个版本的php的时候,需要指定配置文件

./configure --with-php-config=/home/work/thirdparty/php5/bin/php-config

三 编译和安装

make 之后最好make test

make install

cuihuan:phpredis cuixiaohuan$ make。。。Build complete.Don't forget to run 'make test'.cuihuan:phpredis cuixiaohuan$ make testcuihuan:phpredis cuixiaohuan$ make install

四 问题修复

【已修复,但是原因可能不太准确】

make编译报错

.libs/redis_cluster.o(.data.rel.local+0x0): In function `ht_free_seed':/home/work/thirdparty/php5/php5/phpredis/redis_cluster.c:226:     multiple definition of `arginfo_scan'.libs/redis.o(.data.rel.local+0xe0):/home/work/thirdparty/php5/php5/p hpredis/redis.c:452: first defined here/usr/bin/ld: Warning: size of symbol `arginfo_scan' changed from 160 in .libs/redis.o to 200 in .libs/redis_cluster.o.libs/redis_cluster.o(.data.rel.local+0xe0): In function `create_cluster_context':/home/work/thirdparty/php5/php5/phpredis/redis_cluster.c:276:     multiple definition of `arginfo_kscan'.libs/redis.o(.data.rel.local+0x0):/home/work/thirdparty/php5/php5/phpredis/redis.c:364: first defined herecollect2: ld returned 1 exit statusmake: *** [redis.la] Error 1

最初以为是php多个版本生成install问题,采用./configure 指定php版本,指定php位置。

但是效果还是有问题。
最终通过修改redis_cluester.c 中,注释掉了这两个重复的

40   41 /* Argument info for HSCAN, SSCAN, HSCAN */  42 /*ZEND_BEGIN_ARG_INFO_EX(arginfo_kscan, 0, 0, 2)  43     ZEND_ARG_INFO(0, str_key)  44     ZEND_ARG_INFO(1, i_iterator)  45     ZEND_ARG_INFO(0, str_pattern)  46     ZEND_ARG_INFO(0, i_count)  47 ZEND_END_ARG_INFO();  48 */  49   50 /* Argument infor for SCAN */  51 /*  52 ZEND_BEGIN_ARG_INFO_EX(arginfo_scan, 0, 0, 2)  53     ZEND_ARG_INFO(1, i_iterator)  54     ZEND_ARG_INFO(0, str_node)  55     ZEND_ARG_INFO(0, str_pattern)  56     ZEND_ARG_INFO(0, i_count)  57 ZEND_END_ARG_INFO();  58 */

五 简单测试

connect('127.0.0.1',6379); echo "redis pass and status show
"; var_dump($redis->ping()); $redis->set('test_key','test_value'); echo "test set val=".$redis->get('test_key')."
"; $redis->setnx('unique_key',"unique_val"); $redis->setnx('unique_key',"unique_val_2"); echo $redis->get("unique_key"); sleep(60); echo 'is exist'.$redis->exists('test_60s'); echo 'not has value'.$redis->get('test_60s'); $redis->delete('test_key','test_60s');

转载地址:http://lsxkl.baihongyu.com/

你可能感兴趣的文章
编译bash实现history的syslog日志记录
查看>>
Java数据类型
查看>>
mysql主从备份
查看>>
我的友情链接
查看>>
强化学习概览
查看>>
Oracle启动出现ORA-27125错误
查看>>
读书笔记之委托与事件(下)
查看>>
我的友情链接
查看>>
Linux grep 查找字符串 前后几行
查看>>
P3402 最长公共子序列(nlogn)
查看>>
我的友情链接
查看>>
Android基础(六) – Service属性及常用方法
查看>>
C#实现对站点、程序池状态的监控,以及URL能正常返回的监控,状态异常,邮件预警...
查看>>
看看清华的大学生都在做什么
查看>>
Spring MVC 滤器实现去除空格、增加参数功能
查看>>
androi开发 Bitmap回收问题
查看>>
常用Jquery操作总结
查看>>
Biztalk异常处理解决方案
查看>>
grails中如何支持事务处理
查看>>
barcode4j生成二维条行码
查看>>