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

时间:2018-10-08 08:39:22

标签: php nginx

我正在使用安装了nginx和php7.0-fpm的ubuntu 16.0.4。是否可以同时将另一个版本的php用于另一个项目?

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

3 个答案:

答案 0 :(得分:1)

考虑使用Docker可能是一个好主意。即使同一服务器上可能有多个版本的PHP。

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

为什么要运行多个操作系统?如果您需要一个项目的某个版本的PHP具有特定版本的PHP,而另一个项目的另一个版本,则可以创建两个Docker“容器”,这将是两个独立的Ubuntu环境,可以将nginx配置为每个环境单独进行项目。

主要优点是在进行另一个项目时不会破坏一个项目。您可以安全地自定义nginx服务器,以适应任何项目可能有的市场需求。您还可以复制一个容器,以便多个人可以在完全相同的Ubuntu环境中使用相同的版本和配置文件进行所有工作。

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

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

答案 1 :(得分:0)

也许您可以尝试使用Docker或Vagrant。 或尝试以下操作:https://tecadmin.net/install-multiple-php-version-nginx-ubuntu/

答案 2 :(得分:0)

我通常将fastcgi_pass套接字变量更改为我的nginx conf文件。

 location ~ \.php$ {
       ...

        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;

       ....
    }

检查您的php版本的袜子位置。我的(使用Debian 9)可以位于/ 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