在同一台机器上使用两个不同的php版本

在同一台机器上使用两个不同的php版本,php,nginx,Php,Nginx,我使用的是安装了nginx和php7.0-fpm的ubuntu16.0.4。是否可以同时为另一个项目使用另一个版本的php 我应该如何更改我的NGNIX配置文件?< P> >考虑使用DOCKER可能是个好主意。即使可能在同一台服务器上有多个版本的PHP Docker是一个优雅的系统,它允许您同时运行多个操作系统实例,而不存在虚拟机的缺点 为什么要运行多个操作系统?如果一个项目需要某个版本的PHP,另一个项目需要另一个版本的PHP,那么可以创建两个Docker“容器”,这两个容器是两个独立的Ubu

我使用的是安装了nginx和php7.0-fpm的ubuntu16.0.4。是否可以同时为另一个项目使用另一个版本的php


我应该如何更改我的NGNIX配置文件?

< P> >考虑使用DOCKER可能是个好主意。即使可能在同一台服务器上有多个版本的PHP

Docker是一个优雅的系统,它允许您同时运行多个操作系统实例,而不存在虚拟机的缺点

为什么要运行多个操作系统?如果一个项目需要某个版本的PHP,另一个项目需要另一个版本的PHP,那么可以创建两个Docker“容器”,这两个容器是两个独立的Ubuntu环境,可以将nginx配置为分别用于每个项目

其主要优点是,在处理另一个项目时不可能中断一个项目。您可以根据任何项目可能具有的任何bazaar需求安全地定制nginx服务器。您还可以复制一个容器,以便多人可以使用完全相同的Ubuntu环境,使用相同的版本和配置文件处理所有内容

这听起来可能效率低下,但事实并非如此:

  • 一个容器(Ubuntu环境)通常大约有200MB大,因为你只需要安装你将要用于该项目的东西
  • Docker是一个虚拟机,这意味着它不像虚拟机那样伪造硬件,而是直接使用您机器的硬件
  • 在Linux中运行Docker时,内核是共享的。这意味着容器中的所有可执行二进制文件都与本机二进制文件完全相同,但在不同的环境中运行

    • 也许你可以尝试使用Docker或Vagrant。
      或者试试这个:

      我通常会将fastcgi\u pass socket变量更改为我的nginx conf文件

       location ~ \.php$ {
             ...
      
              fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
      
             ....
          }
      
      检查php版本的sock位置。我的(使用Debian9)可以位于/var/run/php中/

      cd /var/run/php
      
      目前,我的系统上安装了php fpm 5.6和7.2,list命令将输出php5.6-fpm.sock和php7.2-fpm.sock文件

      然后,您可以将sock指针替换为nginx文件:

      location ~ \.php$ {
          ...
          fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
          ....
      }
      
      请记住在以后重新加载nginx:

      sudo systemctl restart nginx