macos同时运行多个版本php程序(nginx+php56+php72)

开发过程中经常遇到不同的项目对php版本有特殊的要求,来回切换php环境也比较麻烦。macos可以使用homebrew快速搭建多php版本开发环境,nginx 配置中指定不同版本php-fpm实现多版本php同时运行,再不需要再去手动切换了(*^▽^*)……


备注:在执行安装之前,请确保自行安装homebrew,nginx。

1.安装php56:
执行命令:brew install php56 --without-apache --with-fpm
安装完成有很多操作提示,可以参照操作提示执行,比如环境变量的设置等等。此处讲启动php56。


2.启动php56
执行命令:brew services start php@5.6


3.安装php72
执行命令:brew install php72

 

1、通过brew install安装应用最先是放在/usr/local/Cellar/目录下。
2、有些应用会自动创建软链接放在/usr/bin或者/usr/sbin,同时也会将整个文件夹放在/usr/local
3、可以使用brew list 软件名确定安装位置。
比如查找安装mysql 在那个位置
可以在终端直接输入 brew list mysql
安装后的文件路径:/usr/local/Cellar/php/8.0.3/bin/php


4.php-fpm修改
通过安装完成的配置可以看到php-fpm配置存放目录,修改监听端口,两个php-fpm监听端口不能相同,否则会冲突。
5.6的配置文件在/usr/local/etc/php/5.6/php-fpm.conf
7.2的配置文件在/usr/local/etc/php/7.2/php-fpm.d/www.conf


修改其中任意一个即可,我修改的是56版本的php-fpm配置
执行命令:vim /usr/local/etc/php/5.6/php-fpm.conf
修改listen = 127.0.0.1:9000为listen = 127.0.0.1:9001
保存。


5.启动php72
参考php56


6.nginx配置
(1)在nginx.conf中添加vhost配置,如下:
在/usr/local/etc/nginx/nginx.conf文件中最后一行添加:include servers/*;


(2)增加项目配置,示例如下:

cd /usr/local/etc/nginx/servers/
vim 8011.conf

文件内容:

server {
    listen       8011;
    server_name  localhost;


    root /Users/eva/Documents/project1/; # 该项要修改为你准备存放相关网页的路径


    location / {
        index index.php index.html;
        autoindex on;
    if (!-e $request_filename) {
               rewrite  ^(.*)$  /index.php?s=/$1  last;
              break;
         }
    }


    #proxy the php scripts to php-fpm
    location ~ \.php$ {
      #include /usr/local/etc/nginx/fastcgi.conf;
          fastcgi_split_path_info ^(.+\.php)(.*)$;
          fastcgi_param PATH_INFO $fastcgi_path_info;
          fastcgi_pass   127.0.0.1:9000;
          fastcgi_index  index.php;
          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
          include        fastcgi_params;
    }


}


保存并退出。


按照上边方法再新建php56版本的项目配置,其中fastcgi_pass   127.0.0.1:9000;修改为fastcgi_pass   127.0.0.1:9001;即可执行php56.


7.启动或重启nginx

启动nginx:brew services start nginx
重启nginx:brew services restart nginx



有话要说