主页 >> 程序猿的东西 >> brew安装php缺少mysql扩展的完美解决

brew安装php缺少mysql扩展的完美解决

注:本文写于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安装就万事大吉了。

发表评论