×

Homebrew安装PHP(new!)

96
殷临风
2018.08.18 02:46* 字数 742

由于Homebrew仓库的更新, 将homebrew/homebrew-php合并到homebrew/core中, 同时也去掉了php各种扩展包. 甚至php安装包的名称也做了统一修改

以php7.1为例, 以前的安装方式是

brew install php71

而现在需要按照brew的统一包名称规范

brew install php@7.1

其中homebrew包管理工具的安装, 这里不做多的介绍

对比以前的方式, 现在安装的php会附加更多的扩展, 比如mysql, gd相关的扩展都会统一安装进来. 对于一般的初学者, 确实方便了很多, 但对于使用框架的开发人员, 反而会因为找不到其他扩展而烦恼, 比如redis

如果我们按照以前的方式安装redis扩展

brew install php71-redis

从结果来看, 这个安装包是找不到了, 那么这个时候, 我们有两种做法

  1. 通过源码编译安装
  2. 通过pecl安装

这里, 我们选择第二种方式, 毕竟我们不想处理php和扩展包的版本依赖问题

如果使用pecl安装, 首先得安装pear, 这个大家可以自行安装, 但这里有个好消息告诉大家, pecl工具已经在安装php@7.1时, 帮我们也一并安装了, 所以这里直接使用就好了

上面展示的是php的bin目录, 可以看到pecl工具

另外有个小插曲, 在mac系统版本为10.13之后, 系统默认的php版本是 7.1.16, 如果你通过brew安装了php, 要确认, 你在终端中的php命令一定是你通过brew安装的, 如果不是, 可以按照下面方法

如果你熟悉hombrew的文件结构, 就会知道安装的可执行文件默认都在/usr/local/bin, 并且以软连接的形式存在, 那么我们可以把phppecl加进去

cd /usr/local/bin
ln -s ../Cellar/php@7.1/7.1.20/bin/php  php
ln -s ../Cellar/php@7.1/7.1.20/bin/pecl  pecl

注意改成自己的路径, 修改完成后, 重新打开终端

php --version

这个时候, 可以安装我们的扩展了

pecl install redis

可以看到, pecl会自动帮我们解决依赖关系, 下载合适的扩展版本

但事情不总是那么顺利, 在mac下使用pecl, 一定要注意权限问题, 特别是pecl的下载目录和缓存目录的权限, 可以通过下面命令查看

pecl config-show

需要将文件的owner设置为自己, 否则会一直提示权限问题

sudo chown -R magina:wheel /tmp/pear

之后就可以正常安装了, 另外, 我们这里的redis扩展还需要依赖igbinary, 这个也是核心包中没有的, 所以还需要先安装它

pecl install igbinary

再安装redis扩展

pecl install redis

当我们安装完redis扩展后, 可以确认模块是否加载成功

php -m | grep r

php.ini配置文件中确认

grep -rn 'redis' /usr/local/etc/php/php.ini

确定so文件的位置, 可以通过查看pecl的编译后的文件路径

pecl config-show
ls /usr/local/lib/php/pecl/20160303

可以看到我们通过pecl编译安装的扩展文件在里面

PHP
Web note ad 1