作为一个 Web 前端攻城狮,因工作需要搭建 php 环境,安装 php redis 扩展,因为不是专业搞 php 开发的,所以在安装的过程中各种坑,走了很长的弯路才绕回到正道上;
电脑是 iMac 一体机,因为不专业,所以 php 环境是用 mamp 搭建的;由于 mamp 默认安装的 php 不全,缺少一些 .h 的头文件,这会导致后面安装 redis 的问题,所以首先需要下载 php 源码进行编译;
下载并编译 php
我本地环境用的 php 版本是 v7.1.8,所以从 php 官网下载了 v7.1.8 原版进行编译,网上查的资料说下载的准备编译的 php 版本只要前两为版本好一样就行,最后一位有区别不影响,即你也可以下载当前最新的 v7.1.11 版本;强迫症作祟,我还是下载了同本地环境一样的版本 php-7.1.8;
下载完成后,解压出 php-7.1.8
文件夹;
打开 Finder 到这个目录 MAMP/bin/php/php7.1.8/
,网上的楼主们说在这个目录下新建一个 include 文件夹,然后将刚才解压的 php-7.1.8 文件夹 Copy 至 include 目录下并重命名为 php 文件夹;但是为什么我的 MAMP/bin/php/php7.1.8/
目录下有 include 目录,并且 include 目录下也有 php 文件夹,真是日了狗了;
怕影响后面的安装步骤,只能假装没有 include 这个个目录:将原有的 include 目录重命名为 include.bak,然后按照教程新建 include 目录,并将解压的 php-7.1.8 文件夹 Copy 至 include 目录下并重命名为 php;
开始编译...
打开 iTerm2(终端),输入一下命令:
// 切换至 php 目录
cd /Applications/MAMP/bin/php/php7.1.8/include/php/
// 开始编译
./configure
代码自动执行中...
然后不出意外报错了~
网上说是因为缺少 libiconv
,具体是什么东东,不清楚,缺少就安装呗~
使用 Homebrew 来进行安装:
brew install libiconv
安装完成,如图:
再次编译 ./configure
,还是报相同的错误:configure: error: Please specify the install prefix of iconv with --with-iconv=<DIR>
;
这是因为虽然安装了 libiconv,但是没有指定目录,需要这样:
./configure --with-iconv=/usr/local/Cellar/libiconv/1.15/
代码自动执行中...
成功了~,如图:
另外需要说一下,这里的这个错误还有另一个解决方法,参考 stackoverflow,我没试过~
下载并编译 phpredis
下载 phpredis
git clone https://github.com/phpredis/phpredis.git
下载成功提示如图:
切换到 phpredis 目录
cd phpredis
编译 phpredis
/Applications/MAMP/bin/php/php7.1.8/bin/phpize
代码自动执行中...
很不幸,又报错了~,如图:
查了网上说是因为缺少 autoconf
,同样不知道是什么东东,缺啥装啥~
Homebrew 神器召唤中...
brew install autoconf
安装成功,如图:
再次执行 /Applications/MAMP/bin/php/php7.1.8/bin/phpize
命令编译,成功了~
如图:
接着执行命令:
./configure --with-php-config=/Applications/MAMP/bin/php/php7.1.8/bin/php-config
如果这里代码执行报错:configure: error: Cannot find php-config. Please use --with-php-config=PATH
,说明你执行 ./configure 时 --with-php-config 这个参数配置路径错误导致的,重新检查一下你的配置路径;
执行成功后如图:
继续执行命令:
make
代码自动执行中...
执行成功后如图:
命令行都说了 Don't forget to run 'make test'. 当然是执行了
make test
不出意外,执行成功,至此 phpredis 编译成功,如图:
最后将编译成功后 phpredis/modules/ 目录下会生成 redis.so 文件,把它复制到 redis 的拓展目录 MAMP/bin/php/php7.1.8/lib/php/extensions/no-debug-non-zts-20160303/
目录下,no-debug-non-zts-20160303
目录命名可能不一样,需要注意一下;
执行复制命令:
sudo cp -p modules/redis.so /Applications/MAMP/bin/php/php7.1.8/lib/php/extensions/no-debug-non-zts-20160303/
会要求输入你的电脑登录密码,命令执行成功后可在 MAMP/bin/php/php7.1.8/lib/php/extensions/no-debug-non-zts-20160303/
目录下查看是否有 redis.so
文件;
修改 php.ini
php.ini 文件在 MAMP/bin/php/php7.1.8/conf/
目录下
在 php.ini 文件最后添加一行 extension = redis.so
,保存,重启 MAMP;
至此,安装完成~
参考:
http://blog.csdn.net/biyongyao/article/details/69941482
http://blog.csdn.net/qdujunjie/article/details/32324637
http://blog.csdn.net/u013332865/article/details/49638923