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

MAC 下 安装 MAMP的PHP redis扩展

2018-03-02 15:55 661 查看

MAC 下 安装 MAMP的PHP redis&memcache扩展

首先说明,所谓添加扩展,分两步:将扩展文件放在扩展的文件夹下 (本次是将redis.so 放在applications/MAMP/bin/php/php5.5.18/lib/php/extensions/no-debug-non-zts-20121212下,最后一个文件夹的名字每个人可能不一样)修改php.ini  即在php.ini 中添加一行:extensions = redis.soOK.开始安装首先我们要去下PHP的源码文件,本人使用的PHP5.5.18 所以下载的5.5.30的源码,也就是说只要下载X.X对应的版本号就可以了,最后的.18和官网的.30虽然不同,但是不影响使用,下载完成解压放到
applications/MAMP/bin/php/php5.5.18/include/
下(include是我新建的)在终端中先进入上一步的php源码路径 
cd /Applications/MAMP/php/php5.5.18/include/php 
./configure
 (最后的php文件夹名字,我嫌解压缩出来的太长给改了)。 这一步是为了让下一步编译redis.so时,有对应的php头部文件。下载redis
git clone https://github.com/nicolasff/phpredis.git
这里可能报没权限的错  在前面加上 sudo
1不出意外下载之后是在根目录下的,既然要编译redis就要进入redis的文件夹
cd phpredis
1进入之后开始编译
phpize //注意可能要加sudo  因为可能没权限. php5.5.18改成你需要安装扩展的php版本. 另外执行该命令的目录一定要在扩展包的源码路径下   这里是/phpredis./configure --with-php-config=/Applications/MAMP/php/php5.5.18/bin/php-configmake
123编译成功,这是会在phpredis/modules下生成了redis.so. 现在回到开始说的,把这个redis.so 放到applications/MAMP/bin/php/php5.5.18/lib/php/extensions/no-debug-non-zts-20121212下然后修改php.ini,重启MAMP。 就可以在phpinfo中看到redis了。下面说说memcache的安装吧 和上面安装redis的步骤一样,只不过在编译redis的时候  使用下面的指令
./configure --enable-memcache --with-php-config=/applications/mamp/bin/php/php5.5.18/bin/php-config --with-zlib-dir=/usr/local/Cellar/zlib/1.2.8
12下面说一些安装过程中可能遇到的错误吧。第一种: Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519 Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script. 解决办法: 缺啥就装啥,我这里使用brew安装的
brew install autoconf
1第二种: redis.so 放进去 php.ini也改了 重启MAMP之后phpinfo没出现redis 解决办法: 修改这里的php.ini就可以了。第三种: configure: error: Please specify the install prefix of iconv with –with-iconv=解决办法: brew安装libiconv 在第二部给configure指定路径 ./configure –with-iconv=/usr/local/Cellar/libiconv/1.14/第四种: 这个算不上错误。 测试:
<?php$redis = new redis();$redis->connect('127.0.0.1', 6379);$redis->set('test',"hello world");$result = $redis->get('test');var_dump($result);?>  
1234567正常会输出: string(11) “hello world”如果输出: Fatal error: Uncaught exception ‘RedisException’ with message ‘Redis server went away’ in ‘测试文件地址’: Redis->set(‘test’, ‘hello world’) #1 {main} thrown in ‘测试文件地址’ 原因有可能是没有开启 redis服务。上面只是下载redis用于编译redis.so,并没有安装,这里我们用brew安装。 解决办法: 在终端输入:
brew install redis
1安装redis服务
redis-server
1开启redis服务 到这里就可以用了。再给一个关闭服务的指令
redis-cli -p 6379 shutdown
16379是测试端口,即测试代码中的6379.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: