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 
 
 Build without Process Control support 
 
 --without-pear 
 
 Build without PEAR 
 
 --without-snmp 
 
 Build without SNmp support 
 
 --HEAD 
 
 Install HEAD version


    PHP编译过程中如果遇到  configure: error: Cannot find OpenSSL's <evp.h>  错误,执行  xcode-select --install  重新安装一下 Xcode Command Line Tools 即可解决该错误(来源: https://github.com/Homebrew/homebrew-php/issues/1181

)。


     安装完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。