由于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
从结果来看, 这个安装包是找不到了, 那么这个时候, 我们有两种做法
- 通过源码编译安装
- 通过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
, 并且以软连接的形式存在, 那么我们可以把php
和pecl
加进去
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编译安装的扩展文件在里面
网友评论