我在安装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 的正确方式请方便告知 谢谢