Mac用 brew 工具安装不同版本的php教程
Brew 是 Mac 下面的包管理工具,能在Mac中方便的安装软件或者卸载软件,只需要一个命令,非常方便,本文我们来看看用brew安装不同版本的php.
MAC OS X 10.9.5系统里已经自带了apache和 php,只是默认没有启用,我们将他们启用即可.
APACHE的默认版本是 Apache/2.2.26(Unix),php版本是PHP 5.4.30,由于调试程序需要,我需要同时安装低版本的php5.3,但是又不希望删除系统预装的php 5.4,或升级/降级系统的php5.4,那么怎么办呢?这个时候,就可以通过brew的方式安装新的php版本.
第一步:先安装 brew
Brew 是 Mac 下面的包管理工具,通过 Github 托管适合 Mac 的编译配置以及 Patch,可以方便的安装开发工具,Mac 自带ruby 所以安装起来很方便,同时它也会自动把git也给你装上,官方网站:http://brew.sh
在mac下终端里直接输入命令行:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装完成之后,建议执行一下自检:brew doctor 如果看到Your system is ready to brew.那么你的brew已经可以开始使用了.
常用命令:所有软件以PHP5.5为例子
- brew update #更新brew可安装包,建议每次执行一下
 - brew search php55 #搜索php5.5
 - brew tap josegonzalez/php #安装扩展<gihhub_user/repo>
 - brew tap #查看安装的扩展列表
 - brew install php55 #安装php5.5
 - brew remove php55 #卸载php5.5
 - brew upgrade php55 #升级php5.5
 - brew options php55 #查看php5.5安装选项
 - brew info php55 #查看php5.5相关信息
 - brew home php55 #访问php5.5官方网站
 - brew services list #查看系统通过 brew 安装的服务
 - brew services cleanup #清除已卸载无用的启动配置文件
 - brew services restart php55 #重启php-fpm
 
第二步,安装PHP
先添加brew的PHP扩展库:
- brew update
 - brew tap homebrew/dupes
 - brew tap homebrew/php
 - brew tap josegonzalez/homebrew-php
 
可以使用 brew options php53 命令来查看安装php5.3的选项,这里我用下面的选项安装:
brew install php53 --with-apache --with-gmp --with-imap --with-tidy --with-debug
请注意:如果你希望以mac下的apache作为web server,编译时要加 --with-apache;如果你的web server 是 nginx这类,就需要加上 --with-fpm.
- Options
 - --disable-opcache
 - Build without Opcache extension
 - --disable-zend-multibyte
 - Disable auto-detection of Unicode encoded scripts
 - --homebrew-apxs
 - Build against apxs in Homebrew prefix
 - --with-apache
 - Enable building of shared Apache 2.0 Handler module, overriding any options which disable apache
 - --with-cgi
 - Enable building of the CGI executable (implies --without-apache)
 - --with-debug
 - Compile with debugging symbols
 - --with-fpm
 - Enable building of the fpm SAPI executable (implies --without-apache)
 - --with-gmp
 - Build with gmp support
 - --with-homebrew-curl
 - Include Curl support via Homebrew
 - --with-homebrew-libxslt
 - Include LibXSLT support via Homebrew
 - --with-homebrew-openssl
 - Include OpenSSL support via Homebrew
 - --with-imap
 - Include IMAP extension
 - --with-libmysql
 - Include (old-style) libmysql support instead of mysqlnd
 - --with-mssql
 - Include MSSQL-DB support
 - --with-pdo-oci
 - Include Oracle databases (requries ORACLE_HOME be set)
 - --with-phpdbg
 - Enable building of the phpdbg SAPI executable (PHP 5.4 and above)
 - --with-postgresql
 - Build with postgresql support
 - --with-thread-safety
 - Build with thread safety
 - --with-tidy
 - Include Tidy support
 - --without-bz2
 - Build without bz2 support
 - --without-mysql
 - Remove MySQL/MariaDB support
 - --without-pcntl //开源软件:phpfensi.com
 - Build without Process Control support
 - --without-pear
 - Build without PEAR
 - --without-snmp
 - Build without SNmp support
 - --HEAD
 - Install HEAD version
 
HP编译过程中如果遇到 configure: error: Cannot find OpenSSL's <evp.h> 错误,执行 xcode-select --install 重新安装一下 Xcode Command Line Tools 即可解决该错误.
安装完php后,会有一段提示,请仔细阅读:
- Caveats
 - To enable PHP in Apache add the following to httpd.conf and restart Apache:
 - LoadModule php5_module /usr/local/opt/php53/libexec/apache2/libphp5.so
 - The php.ini file can be found in:
 - /usr/local/etc/php/5.3/php.ini
 - ✩✩✩✩ PEAR ✩✩✩✩
 - If PEAR complains about permissions, 'fix' the default PEAR permissions and config:
 - chmod -R ug+w /usr/local/Cellar/php53/5.3.29/lib/php
 - pear config-set php_ini /usr/local/etc/php/5.3/php.ini
 - ✩✩✩✩ Extensions ✩✩✩✩
 - If you are having issues with custom extension compiling, ensure that
 - you are using the brew version, by placing /usr/local/bin before /usr/sbin in your PATH:
 - PATH="/usr/local/bin:$PATH"
 - PHP53 Extensions will always be compiled against this PHP. Please install them
 - using --without-homebrew-php to enable compiling against system PHP.
 - ✩✩✩✩ PHP CLI ✩✩✩✩
 - If you wish to swap the PHP you use on the command line, you should add the following to ~/.bashrc,
 - ~/.zshrc, ~/.profile or your shell's equivalent configuration file:
 - export PATH="$(brew --prefix homebrew/php/php53)/bin:$PATH"
 - To have launchd start php53 at login:
 - ln -sfv /usr/local/opt/php53/*.plist ~/Library/LaunchAgents
 - Then to load php53 now:
 - launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php53.plist
 - ==> Summary
 - /usr/local/Cellar/php53/5.3.29: 480 files, 31M, built in 12.9 minutes
 
等待PHP编译完成,开始安装PHP常用扩展,扩展安装过程中 brew会自动安装依赖包,使用 brew search php53- 命令,可以查看还有哪些扩展可以安装,然后执行 brew install php53-XXX 就可以了.
由于Mac自带了php和php-fpm,因此需要添加系统环境变量PATH来替代自带PHP版本:
- echo 'export PATH="$(brew --prefix homebrew/php/php53)/bin:$PATH"' >> ~/.bash_profile #for php
 - echo 'export PATH="$(brew --prefix homebrew/php/php53)/sbin:$PATH"' >> ~/.bash_profile #for php-fpm
 - echo 'export PATH="/usr/local/bin:/usr/local/sbin:$PATH"' >> ~/.bash_profile #for other brew install soft
 - source ~/.bash_profile #更新配置
 
如何卸载安装的 php5.3呢?
# 卸载:brew uninstall php53
# 清除缓存以及老旧版本文件:brew cleanup -s
测试一下效果:
- $ php -v
 - PHP 5.3.29 (cli) (built: Jan 24 2015 12:40:58) (DEBUG)
 - Copyright (c) 1997-2014 The PHP Group
 - Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
 
mac系统自带的php:
- $ /usr/bin/php -v
 - PHP 5.4.30 (cli) (built: Jul 29 2014 23:43:29)
 - Copyright (c) 1997-2014 The PHP Group
 - Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
 - with Zend Guard Loader v3.3, Copyright (c) 1998-2013, by Zend Technologies
 
由于我们没有安装php的fpm模式,所以 php-fpm -v 命令显示的是mac自带的:
- $ php-fpm -v
 - PHP 5.4.30 (fpm-fcgi) (built: Jul 29 2014 23:44:15)
 - Copyright (c) 1997-2014 The PHP Group
 - Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
 - with Zend Guard Loader v3.3, Copyright (c) 1998-2013, by Zend Technologies
 
这个时候,我们使用 phpinfo 函数显示出来的php版本还是max自带的PHP5.4,需要我们修改 apache的配置文件 httpd.conf,加载的php5模块路径指向刚刚安装的 php5.3目录里的 libphp5.so:
LoadModule php5_module /usr/local/opt/php53/libexec/apache2/libphp5.so
重启apache,phpinfo() 脚本里显示的 php 版本就变成了 PHP Version 5.3.29.