macos(mojave)配置多版本php
一直以来,macos上的PHP开发环境除了常规的虚拟机姿势以外,系统自带的apache+php也是可选项之一
后来系统自带的PHP环境满足不了要求,又懒得倒腾虚拟机,采用了一个第三方一键脚本环境:https://php-osx.liip.ch/
用得挺身心的,一直到系统升级了了mojave的大版本,系统自带的apache版本和https://php-osx.liip.ch/的类库冲突,导致服务不能正常启动,解决版本就是卸载系统自带的apache,采用brew安装,那么既然重新装了,索性连PHP环境也整体更新吧,毕竟现在是7.X版本为主了,5.X都是一些历史项目兼容需要
过程记录如下:
- 首先确保系统brew已经安装且 brew update 后正常状态
- 卸载老版本的PHP,这一点php-osx比较好,删除/usr/local/php5 所在的软链和原文件夹即可
停止系统自带apache服务并卸载
sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null通过brew安装apache
brew install httpd
期间配置省略,附带若干常用命令
sudo brew services start httpd
sudo apachectl start
sudo apachectl stop
sudo apachectl -k restart
安装PHP环境,如果需要PHP5.X则需要额外支持
brew tap exolnet/homebrew-deprecated
2020年12月12 更新 ,因为openssl和icu4c的版本问题,上面这个包没有很好解决
[email protected] 换下面的安装方式
brew tap shivammathur/php
brew install shivammathur/php/[email protected]安装PHP
brew install [email protected]
brew install [email protected]
brew install [email protected]
brew install [email protected]
安装顺序执行后的PHP版本是7.3的,如果我们要PHP5.X版本,则执行如下命令
brew unlink [email protected] && brew link --force --overwrite [email protected]
在/usr/local/etc/httpd/httpd.conf 的如下地方加入以下配置
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
LoadModule php5_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp5.soLoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
重启apache即可生效
最后如果我们要切换PHP版本
可以在/usr/local/bin 里面安装一个sphp可执行shell
$ curl -L https://gist.githubusercontent.com/rhukster/f4c04f1bf59e0b74e335ee5d186a98e2/raw > /usr/local/bin/sphp
$ chmod +x /usr/local/bin/sphp
确保sphp所在的bin目录在$PATH中,最后可以随意的切换了
在命令行中输入 sphp 7.3即可
本文参考翻译自https://getgrav.org/blog/macos-mojave-apache-multiple-php-versions