mac ampps 安装php redis 扩展

我在安装php redis 的时候 遇到了一些问题 我是用的是homebrew 方式安装 ampps 使用的 php 版本是 php5.6

下面在终端执行代码

~$ brew install php56-redis
...
==> Caveats
To finish installing redis for PHP 5.6:
  * /usr/local/etc/php/5.6/conf.d/ext-redis.ini was created,
    do not forget to remove it upon extension removal.
...

安装完成之后 会提示redis 已经存在在一个ini 文件中 即上面提示的/usr/local/etc/php/5.6/conf.d/ext-redis.ini 文件
[也可以使用命令 brew info php56-redis 方式查看已经安装好的一些工具的详情]

文件内容大致如下

[redis]
extension="/usr/local/opt/php56-redis/redis.so"

; phpredis can be used to store PHP sessions.
; To do this, uncomment and configure below
;session.save_handler = redis
;session.save_path = "tcp://host1:6379?weight=1, tcp://host2:6379?weight=2&timeout=2.5, tcp://host3:6379?weight=2"

按照说明 只要在php.ini 配置文件中添加

[redis]
extension="/usr/local/opt/php56-redis/redis.so"

重启apache 就可以了


BUT!!!!!!

事情并没有那么简单

如果你按照我上面说的那么做了 在PHP执行的时候会有下面的报错

dingmac@modern_php$ php -m 
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/opt/php56-redis/redis.so' - dlopen(/usr/local/opt/php56-redis/redis.so, 9): no suitable image found.  Did find:
    /usr/local/opt/php56-redis/redis.so: mach-o, but wrong architecture in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/usr/local/opt/php56-redis/redis.so' - dlopen(/usr/local/opt/php56-redis/redis.so, 9): no suitable image found.  Did find:
    /usr/local/opt/php56-redis/redis.so: mach-o, but wrong architecture in Unknown on line 0

上面问题出现的根本原因是ZendServer CE 版本 只支持 32位的 ZendServer PRO 版本 可能支持的更多 但是收费,大部分集成软件 都是CE 版本。你可能会问怎么查看到呢?ZendServer 是否32 位的 这个你需要自己研究一下,这个我自己找了没找到 说是在一个zend_server.ini 文件中

dingmac@modern_php$ find /Applications/AMPPS/  -name  "*server*" | grep "zend"

我没有找到 但是可以使用另外的方法来变相的验证 必须是32位的

dingmac@modern_php$ find /Applications/AMPPS/  -name  "*.so" | grep  php-5.6
/Applications/AMPPS//php-5.6/lib/extensions/ext/bcmath.so
/Applications/AMPPS//php-5.6/lib/extensions/ext/bz2.so
/Applications/AMPPS//php-5.6/lib/extensions/ext/calendar.so
/Applications/AMPPS//php-5.6/lib/extensions/ext/ctype.so
/Applications/AMPPS//php-5.6/lib/extensions/ext/curl.so

然后

dingmac@modern_php$ file /Applications/AMPPS//php-5.6/lib/extensions/ext/pdo_mysql.so 
/Applications/AMPPS//php-5.6/lib/extensions/ext/pdo_mysql.so: Mach-O bundle i386

dingmac@modern_php$ file /Applications/AMPPS//php-5.6/lib/extensions/ext/bcmath.so
/Applications/AMPPS//php-5.6/lib/extensions/ext/bcmath.so: Mach-O bundle i386

你可以多测试几个 发现都是i386

你可以查看 这个redis.so 是不是32位的

dingmac@modern_php$ file /usr/local/opt/php56-redis/redis.so
/usr/local/opt/php56-redis/redis.so: Mach-O 64-bit bundle x86_64

上面说明是64位的所以报错

摘抄自https://www.tumblr.com/search/phpredis

By default, compiling PHP extension on OSX Lion will generate a 64bit binary. However, Zend Server CE only support PHP 32bit. Therefore, I must compile phpredis in 32bit architecture.

所以 我们可以采取另外的方式 即直接编译安装

步骤

  1. git clone git://github.com/nicolasff/phpredis.git
  2. phpize ./configure CFLAGS="-arch i386" make
  3. cd ./modules & file redis.so
  4. cp redis.so 到一个目录 这个目录的权限 775 然后在php.ini 文件中添加 extension=redis.so 的路径
  5. 重启Apache
  6. 检测通过 php -m | grep “redis” 的方式

补充

在链接 https://github.com/phpredis/phpredis

上面说可以使用homebrew 安装

https://github.com/phpredis/phpredis#installation-on-osx

但是我没有安装完成 anyway 反正是解决了如果有homebrew 的正确方式请方便告知 谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值