您的位置:首页 > 数据库 > Redis

mac ampps 安装php redis 扩展

2018-01-15 15:29 567 查看
我在安装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.

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

步骤

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

phpize ./configure CFLAGS="-arch i386"  make


cd ./modules & file redis.so


cp redis.so 到一个目录 这个目录的权限 775 然后在php.ini 文件中添加 extension=redis.so 的路径

重启Apache

检测通过 php -m | grep “redis” 的方式

补充

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

上面说可以使用homebrew 安装

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

但是我没有安装完成 anyway 反正是解决了如果有homebrew 的正确方式请方便告知 谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php redis brew mac php扩展