phpbrew+nginx打造多版本php开发环境
苦于Mac平台上没有类似于phpstudy这样的免费的集成开发环境,MAMP功能不够强大,Pro版又太贵了,MxSrvs这种的免费集成开发环境定制性不强。docker一个个编译安装部署又太过于麻烦,尝试了很多方法,踩了不少坑,最后决定在本地用phpbrew和nginx来实现多版本php集成开发环境。
1. 安装
首先需要安装三个东西
- Homebrew
- Nginx
- phpbrew
1.1 安装Homebrew
HomeBrew是Mac上的包管理器,非常好用。
一条命令就能安装
1 |
|
1.2 安装Nginx
使用Homebrew可以很容易的安装nginx,默认的是安装Nginx最新版
1 |
|
安装完毕后可以查看Nginx版本
1 |
|
1.3 安装PHPbrew
PHPbrew 是个多平台的php管理工具。在这里只列出我配置时的一些操作,具体请移步PHPbrew的wiki。
- 安装依赖
对于Homebrew,则就是
1 |
|
对于后面的三个link操作,我这里都会出警告:
1 |
|
猜测是SIP的问题,但是不想关SIP,就直接按照brew的提示直接把路径添加到环境变量里了。
- 下载phpbrew。
1 |
|
- 初始化phpbrew
1 |
|
- 接着在
.zshrc
文件增加如下行(如果是命令行是Bash,那就在用户目录.bashrc下添加)
1 |
|
- 然后设置库路径
1 |
|
2. PHPbrew 简单使用方法
2.1 PHP版本获取
列出已经安装的php
1 |
|
列出已知的PHP版本
1 |
|
使用 --more
参数可以列出更多版本
1 |
|
使用--old
参数可以列出已知的旧版本
1 |
|
2.2 获取PHP编译参数
列出php的一些编译参数
1 |
|
2.3 编译PHP
默认配置安装PHP:
1 |
|
测试安装:
1 |
|
显示debug信息:
1 |
|
安装旧版本:
1 |
|
2.4 PHP使用和切换
临时使用:
1 |
|
切换版本(设置默认版本):
1 |
|
关闭phpbrew:
1 |
|
3. 配置过程
首先编译需要的PHP版本,在此我使用php-fpm来实现PHP和Nginx通信,需要在编译php时,添加+fpm参数。
3.1 编译php
在之前我已经配置好了php-5.6.40,在此我以php 7.2.14为例,再进行一次配置。
1 |
|
在这里,直接使用phpbrew install 7.2.14 +default +fpm
进行编译,程序找不到bzip2和zlib的路径,需要手动指定该路径。后面在添加一些配置参数时,如果报错说xxx不存在,而且你已经使用brew安装了的话,可以用该方法手动指定路径。
接下来phpbrew会自动下载并编译该版本,在我电脑上大概需要7分钟。
然后切换到php 7.2.14。
1 |
|
可以看到php 7.2.14已经安装成功了。
3.2 修改配置文件
首先修改php-fpm的配置文件。
phpbrew的默认安装目录是在用户家目录下的.phpbrew
文件夹中。
首先修改php-fpm的配置文件,在我电脑上,也就是/Users/mengchen/.phpbrew/php/php-7.2.14/etc
。
打开php-fpm.d
目录下的www.conf
配置文件。对其做以下修改
1 |
|
启动php-fpm
1 |
|
接下来修改Nginx配置文件,路径/usr/local/etc/nginx/nginx.conf
在这里,我把我的web目录放到了/Users/mengchen/www
下,Nginx监听端口修改为80端口。
1 |
|
Nginx检查配置文件,然后重新加载配置文件
1 |
|
在Web目录下创建index.php
文件来做测试
1 |
|
直接访问http://localhost/index.php
为了安全性,可以只允许本机来访问Nginx,本来就是本地开发环境,影响不大。
也可以使用Apache来代替Nginx,配置文件不太一样,不过本质都是使用FPM来进行通信,在此就不详细列了。
3.3 php版本切换脚本
所有的php-fpm
都配置的是监听127.0.0.1:9000
,因此不需要对Nginx进行修改,直接修改当前php-fpm版本即可实现php
的版本切换。
写一个shell
函数,保存在~/.phpbrew/phpchange
文件下。
1 |
|
然后在~/zshrc
文件末尾添加
1 |
|
然后就可以直接在shell
里面切换php
版本了。
1 |
|
此时访问index.php,版本成功切换到了php 5.6.40
。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!