在 MacBook 上安装了 MAMP 开发环境,来调试一个 PHP 的网站项目。MAMP & MAMP Pro软件是一款很好的在MAC下面运行的网站集成环境软件,其由Apache+MySQL+PHP+动态DNS配置构成,PHP的版本可以动态切换到最新版,功能强大,配置简单,十分便于本地调试。
图:MAMP 设置一个虚拟主机及网站安装
后面他想在PHP7的版本下面安装Redis的扩展程序,以配合自己的程序开发。无奈在这位群友屡次安装失败之后,找到我希望来解脱他在面对 terminal(命令行)抛出的一大串错误消息时的痛苦。在这次的解决过程中自己也相当于完成了一次学习,现在就发现的问题和需要注意的事项写成一篇文章。
在 MAC 版 MAMP 环境下为 PHP7.x 安装 redis 扩展的过程。
一、首先解决一些安装依赖的问题
1、(Mac 电脑中已安装了 Homebrew 包管理器的可忽略此步)如果你的 MAC 电脑未安装有 Homebrew——一个包管理器,需要先安装 Homebrew 包管理器,后面步骤中的 ./configure 命令和安装 redis 服务端的命令等需要 brew 为其安装组件。
打开 terminal,安装 Homebrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
将以上命令粘贴至终端(terminal),参考: https://brew.sh/index_zh-cn.html 。
脚本在执行过程中会有多次暂停,并说明将它将做什么;同时也会边执行、边需要联网下载资源,下载速度不会很快(因为是国内网络访问国外站点资源),请耐心等待安装完成。
2、(Mac 电脑中已安装了 configure 配置组件的可忽略此步)使用 brew 命令安装 configure 配置组件。
brew install autoconf wget
二、下载 php-redis 扩展组件的安装包
在终端中使用 git clone 命令下载 php-redis 扩展组件的安装包:
git clone https://github.com/nicolasff/phpredis.git
当然没有用 git 也没关系,可以自己去找官网下载:try https://github.com/nicolasff/phpredis.git 。
图:在GitHub的phpredis仓库下载develo
下载完成后系统会自动解压安装包文件。如果未自动解压,请手动解压或使用 unzip phpredis.zip 命令解压。
解压后使用 cd 命令进入 phpredis 目录:
cd phpredis/
注意:phpredis/ 目录的路径如果不对,请按照其在自己电脑上的完整路径来切换,如 ./phpredis-php7/。
三、使用 phpize 命令编译生成 configure 配置文件
1、phpize 命令:
此时终端显示的当前目录是 phpredis,在终端中执行以下命令:
/Applications/MAMP/bin/php/php7.2.1/bin/phpize --with-php-config=/Applications/MAMP/bin/php/php7.2.1/bin/php-config
如果出现此错误:
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.
则是因为此命令依赖 autoconf 工具,需要安装 autoconf 工具(参考第一步中的第2点)。
如果执行成功,会提示如下信息:
[图片上传失败...(image-5c9c98-1572966543736)]
图:phpize 命令执行成功截图。
2、本步骤需要注意事项:
在这一步需要注意的一个问题是,在使用 phpize 编译命令时,一定要使用 /Applications/MAMP/bin/php/php7.2.1/bin/phpize 这个应用程序 MAMP 下的 php7.x 的 bin 目录来执行 phpize。
因为 MAC 自带了 php 环境,可以使用 MAMP 将 php 配到命令行中,这时候你使用的 php -v 是 MAMP 加到环境变量的 php 版本,但是你如果直接使用 phpize 命令(未指定应用程序 MAMP 下的 php7.x 的 bin 目录的 phpize),那么 phpize 编译的将是系统自带的那个 php 环境,所以直接使用 phpize 编译扩展的时候,会编译到系统自带的 PHP 环境下,故而须注意在使用 phpize 命令时一定要使用的是全路径,而且上面的 php/php{版本}/ 目录路径有可能跟我的不一样,请自行核对并调整 。
四、配置、编译并安装 phpredis
1、配置 phpredis 命令。
此时终端显示的当前目录是 phpredis,在终端中执行以下命令:
./configure --with-php-config=/Applications/MAMP/bin/php/php7.2.1/bin/php-config
如果执行出错,提示“未找到指定目录”之类的信息,也是因为此命令依赖 autoconf 工具,需要安装 autoconf 工具(参考第一步中的第2点)。
如果执行成功,像这样:
[图片上传失败...(image-d018cb-1572966543736)]
图:./configure 命令执行成功截图。
2、编译与安装 phpredis 命令(make 是编译,make install 是安装)。
make && make install
安装成功后,这时会在 phpredis/modules 目录下生成了 redis.so 文件。同时 redis.so 会自动复制到/Applications/MAMP/bin/php/php7.0.8/lib/php/extensions/no-debug-non-zts-20171025/ 目录下(extensions 后面带日期部分的那一级目录可能会与我的不一样,请以自己电脑上的为准)。如果该目录下不存在 redis.so,可手动将 phpredis/modules 目录下的 redis.so 复制过去。至此,phpredis 扩展已安装成功。
五、修改 php.ini
如果直接在对应php版本中修改php.ini会失效(这里遇到个坑),建议在 MAMP Pro 软件中打开 php.ini 文件并修改,因为在终端中使用 vim 命令编辑 php.ini 文件或手动打开编辑 php.ini 文件保存后可能不会起作用,所以建议在 MAMP Pro 软件中打开 php.ini 文件并修改:
[图片上传失败...(image-a26322-1572966543736)]
图:MAMP 中打开 php.ini。
在 php.ini 中搜索 "extension=",在后面添加一行:"extension=redis.so",保存后重启 MAMP。
[图片上传失败...(image-ee37cd-1572966543736)]
图:修改 php.ini 文件。
六、检查 redis 组件是否安装成功
新建一个 phpinfoTest.php 文件,输入:
<?php phpinfo(); ?>
保存后运行,查看是否有 redis 关键字:
[图片上传失败...(image-778a21-1572966543736)]
图:phpinfo 中的 redis 信息。