s4n.ty Asked: 2018-11-30 23:49:30 +0800 CST2018-11-30 23:49:30 +0800 CST 2018-11-30 23:49:30 +0800 CST 如何使用不同版本的PHP?[复制] 772 我有几个虚拟主机,我需要运行不同的 PHP 版本。我已经安装了 php-fpm 和 FastCgi,但是我该如何配置呢? 我正在使用 Ubuntu 16.04 php apache2 2 个回答 Voted bistoco 2018-12-01T00:29:19+08:002018-12-01T00:29:19+08:00 也许不是您正在等待的响应,但是在您的机器中管理多个 php 版本会很痛苦。 我发现最好的方法是使用较新的 php 版本(php7+)作为主要版本,如果我需要较旧的版本或其他特定版本,我从这里使用带有 apache/php的容器或将其用作基本图像并修改如有必要,它有很好的说明来做到这一点。 如果我需要较旧的 php 版本(不支持,所以要小心),我可以从支持该特定版本的较旧操作系统版本构建。 这种方法的优点是,首先,你不会用大量的包和依赖项弄乱你的机器。其次,您不会使用由于版本不兼容而最终相互冲突的所有依赖项和软件包污染您的 php 安装。最后,也是非常重要的一点,dockerizing 应用程序将为您的生产环境提供可复制的配方。 即使你不选择这个作为你的方法,也可以看看 docker。它会让你的喜欢更容易,它是当今开发中使用的“东西”。 Best Answer Jan Myszkier 2018-11-30T23:58:48+08:002018-11-30T23:58:48+08:00 使用 nginx,您所要做的就是通过以下方式使用套接字proxy_pass: server{ (...) location ~ ^/index\.php(/|$) { fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; } } 使用 apache,您需要使用proxy: <FilesMatch "\.php$"> SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/" </FilesMatch> 这样,您可以通过在每个虚拟主机中配置它们来使用不同的套接字(每个用于不同版本的 PHP)
也许不是您正在等待的响应,但是在您的机器中管理多个 php 版本会很痛苦。
我发现最好的方法是使用较新的 php 版本(php7+)作为主要版本,如果我需要较旧的版本或其他特定版本,我从这里使用带有 apache/php的容器或将其用作基本图像并修改如有必要,它有很好的说明来做到这一点。
如果我需要较旧的 php 版本(不支持,所以要小心),我可以从支持该特定版本的较旧操作系统版本构建。
这种方法的优点是,首先,你不会用大量的包和依赖项弄乱你的机器。其次,您不会使用由于版本不兼容而最终相互冲突的所有依赖项和软件包污染您的 php 安装。最后,也是非常重要的一点,dockerizing 应用程序将为您的生产环境提供可复制的配方。
即使你不选择这个作为你的方法,也可以看看 docker。它会让你的喜欢更容易,它是当今开发中使用的“东西”。
使用 nginx,您所要做的就是通过以下方式使用套接字
proxy_pass
:使用 apache,您需要使用
proxy
:这样,您可以通过在每个虚拟主机中配置它们来使用不同的套接字(每个用于不同版本的 PHP)