Mac OS X 系统自带的 php-fpm 配置和 nginx、mysql 的安装:
https://lzw.me/a/mac-osx-php-fpm-nginx-mysql.html

Homebrew安装PHP(new!):
https://www.jianshu.com/p/4189c878da21


homebrew 官网:https://brew.sh

命令使用

#搜索
brew search xxx 例如 brew search mysql

#安装
brew install xxx 例如:brew install mysql

#查询
brew info xxx 例如:brew info mysql 主要查看具体的信息及依赖关系当前版本注意事项等

#更新
如果想要更新到当前最新的版本要先把当前 brew 更新到最新。
brew update 这个时候他会先更新自己到最新 接下来的操作才更有意义

#检测新版本
brew outdated 会列出所有有新版本的程序

#升级
brew upgrade 升级所有 当然也可以指定升级
brew upgrade xxx指定的升级的程序名

#清理
brew cleanup 清理不需要的版本及其安装缓存

#删除
brew uninstall xxx删除不需要的程序

#更多命令详见
man brew

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

安装PHP

brew install php71 # 以前这样安装
brew install php@7.3 # 新版这样安装

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

现在安装的php会附加更多的扩展,比如mysqlgd相关的扩展都会统一安装进来。
但是有些扩展没有提供,需要自己安装, 比如redis


以前的方式安装redis扩展

brew install php71-redis

以上方法现在不能使用了,现在通过两种方法安装

  • 源码编译安装
  • 通过pecl安装

选择第二种方式,pecl会帮我们处理php和扩展包的版本依赖问题

如果使用pecl安装,首先得安装pear
但是在安装php@7.1pecl已经自动安装了,所以不需要自己再安装

上面展示的是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编译安装的扩展文件在里面


# 自动安装最新版的PHP
brew install php
brew link --overwrite php
sudo nano /etc/apache2/httpd.conf
# 删掉原来的 LoadModule php7_module libexec/apache2/libphp7.so
# 增加以下四行:
LoadModule php7_module /usr/local/opt/php/lib/httpd/modules/libphp7.so
<FilesMatch \.php$>
  SetHandler application/x-httpd-php
</FilesMatch>
# 将“DirectoryIndex index.html”,改为:
DirectoryIndex index.php index.html

sudo apachectl restart

# 再修改php.ini
sudo nano /usr/local/etc/php/7.4/php.ini
# 按需求改动一下, 例如:
short_open_tag = Off   >>> On
upload_max_filesize = 2M   >>> 8M
# 启用extension=mbstring 等等
# 保存,重启电脑, ok!

系统自带PHP安装的文件目录

/private/etc                      sudo rm -rf php-fpm.conf.defaultphp.ini php.ini.default
/usr/bin                     sudo rm -rf php php-config phpdoc phpize
/usr/include                 sudo rm -rf php    // 在10.14.1 版本上没有该目录
/usr/lib                        sudo rm -rf php
/usr/sbin                      sudo rm -rf php-fpm
/usr/share                    sudo rm -rf php
/usr/share/man/man1       sudo rm -rf php-config.1 php.1 phpize.1
/usr/share/man/man8       sudo rm -rf php-fpm.8