11/17 发表评论

作为一个 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

代码自动执行中...

然后不出意外报错了~

configure: error: Please specify the install prefix of iconv with --with-iconv=<DIR>

网上说是因为缺少 libiconv,具体是什么东东,不清楚,缺少就安装呗~

使用 Homebrew 来进行安装:

brew install libiconv

安装完成,如图:

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/

代码自动执行中...

成功了~,如图:

php 编译成功

另外需要说一下,这里的这个错误还有另一个解决方法,参考 stackoverflow,我没试过~

下载并编译 phpredis

下载 phpredis

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

下载成功提示如图:

download phpredis

切换到 phpredis 目录

cd phpredis

编译 phpredis

/Applications/MAMP/bin/php/php7.1.8/bin/phpize

代码自动执行中...

很不幸,又报错了~,如图:

Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.

查了网上说是因为缺少 autoconf,同样不知道是什么东东,缺啥装啥~

Homebrew 神器召唤中...

brew install autoconf

安装成功,如图:

autoconf

再次执行 /Applications/MAMP/bin/php/php7.1.8/bin/phpize 命令编译,成功了~
如图:

phpredis 编译成功

接着执行命令:

./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 这个参数配置路径错误导致的,重新检查一下你的配置路径;

执行成功后如图:

configure_with-php-config success

继续执行命令:

make

代码自动执行中...

执行成功后如图:

make

命令行都说了 Don't forget to run 'make test'. 当然是执行了

make test

不出意外,执行成功,至此 phpredis 编译成功,如图:

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

发表评论

回到顶端