Mac brew如何同时运行多版本php

Mac安装运行多个php版本

php经常被用来快速开发web项目,项目多了,难免有个别项目对php的版本会有不同的要求,总是在个人开发环境上来回切换比较麻烦,干脆就搭了多套php环境,可同时运行也可按需运行指定版本的php,互不影响。

工具/原料

  • mac上安装有Homebrew软件安装包工具
  • 已经安装好Nginx或其它WebServer,本文以Nginx为准

第一步:安装多个php版本

打开Mac上的终端工具,执行命令brew help确认是否已经安装了Homebrew,如果未安装,执行指令进行安装/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

Homebrew支持php5.3及之后的php软件包,我们先安装php5.5及对应扩展;使用命令brew search php55可以查看php5.5及对应的扩展包,安装指令

brew install php55 php55-opcache php55-xdebug php55-mcrypt php55-memcache php55-memcached php55-redis,根据自己的需求安装对应的扩展包

执行指令brew unlink php55删除brew中php的软链,只有删除掉软件,brew才允许安装下一个php版本,否则会报错提示,要求使用unlink命令删除php与brew

其它几个版本的php安装方法同上

第二步:配置运行多版本PHP

找到php配置文件位置,默认会安装到/usr/local/etc/php下面,会有各个版本的配置文件目录,php配置文件为php.ini,fpm配置文件为php-fpm.conf(如果没有,请拷贝php-fpm.conf.default一份为php-fpm.conf),对应版本的扩展配置文件在conf.d目录内

编辑php-fpm.conf文件,找到listen = 127.0.0.1:9000这行,修改对应的端口号,要保证每个php版本的fpm监听端口号不一致才可行

网络上查找一份php-fpm的启动脚本(make编译安装时一般会在安装源文件的sapi/fpm/路径下的init.d.php-fpm,编译安装后才有该文件)文件,放到php各版本的安装目录,默认在/usr/local/Cellar下,建议将每个php版本安装文件内sbin目录下,将fpm启动脚本,拷贝或加软链到/usr/local/bin下

切换到/usr/local/bin目录下,编辑各版本php-fpm启动脚本文件,比如php55-fpm,修改里面的php_fpm_PID最后的文件名为php55-fpm.pid,此处匆必保证每个php版本的pid文件不是php-fpm.pid,否则无法完美控制各php版本的启动、重启与停止操作

第三步:配置nginx

打开nginx的nginx.conf配置文件,在http块中增加下图upstream配

置,或者在各个vhost中监听对应的php版本端口也可

为各个项目配置不同的php版本环境即可,重启nginx环境

执行php55-fpm start,启动各php5.5,其它版本类似

注意事项

  • 安装每个新php版本前,需要brew unlink前一个php版本,按提示操作即可
  • 变更每个php的监听端口,保证每个版本监听不同的版本号
  • 保证每个php版本对应的pid文件唯一,以免冲突无法控制

文章最后加一句,此文转载自:https://jingyan.baidu.com/article/c843ea0bc0702e77931e4a9d.html,如有侵权,请联系管理员删除

一条评论

  1. village_guo

    目前做新版brew已经不支持php7一下的版本安装,无法再安装php5.5;
    最低只能安装5.6,可以添加源:brew tap exolnet/homebrew-deprecated

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注