注:本文写于2017年,该方法目前已经失效
前面会有一些废话,如果想直接处理问题请翻到“解决”。
废话
虽然说mysql扩展早在php5.5就开始被嫌弃,奈何老的项目依然需要调用mysql扩展的方法,所以这个扩展还是非要不可。但是brew的安装源最近干了许多大事。首先从php安装选项来看,以前安装php的命令类似这样
brew install --without-apache --with-fpm --with-mysql php56
但是这条命令现在不行了,你这样运行它会给你许多warning,比如:
Warning: homebrew/php/php56: this formula has no --with-fpm option so it will be ignored! Warning: homebrew/php/php56: this formula has no --with-mysql option so it will be ignored!
查看brew php56的安装选项,会发现这两条选项已经被设为默认了,这倒是不必烦恼。但是mysql扩展却是怎么也装不上,只有mysqli和mysqlnd这两个,这实在是令人崩溃。
其实观察了brew在之前安装php的时候有个configure选项是--with-mysql=mysqlnd 这表示用mysqlnd来实现mysql扩展,但是最新的安装选项没有了这条。其实brew安装也是执行一系列脚本,所以我们需要使用一点奇技淫巧,找到他的安装脚本,把这个选项加入configure中即可。
php56的安装脚本是php56.rb,找到这个文件之后有点令人失望,并没有看到想象中的configure命令写在里面,但是看到他引入了一个abstract-php的文件。猜测这个文件是各版本通用的一些配置。
解决
后来在/usr/local/Homebrew/Library/Taps/homebrew/homebrew-php/Abstract 找到了abstract-php.rb。再说一点废话是brew可能会更新文件结构,所以这个路径也不知道可以用多久,但是大体思路就是先找到brew的Tap文件夹。
在这个文件中查找configure关键字。发现了这一行:
system "./configure", *install_args
*install_args就是brew生成的长长的编译选项,这里我们不要轻举妄动。我们只需要在后面加入我们的参数:
system "./configure", *install_args, '--with-mysql=mysqlnd'
然后重新用brew安装就万事大吉了。