![如何使用不同版本的 PHP?](https://linux22.com/image/1161430/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%89%88%E6%9C%AC%E7%9A%84%20PHP%EF%BC%9F.png)
我正在使用 Ubuntu 16.04。
我有多个虚拟主机,需要运行不同的 PHP 版本。我已经php-fpm
安装FastCgi
了,但是如何配置它?
答案1
也许不是您所等待的响应,但是在您的机器中管理多个 php 版本会很痛苦。
我发现最好的方法是使用较新的 php 版本(php7+)作为主要版本,如果我需要较旧或其他特定版本,我会使用带有apache/php 从这里或者使用它作为基础图像并根据需要进行修改,它有很好的说明来做到这一点。
如果我需要旧版 php(不受支持因此要小心),我可以从支持该特定版本的旧版 OS 版本开始构建。
这种方法的优点是,首先,您不会因为大量的软件包和依赖项而弄乱您的机器。其次,您不会因为所有依赖项和软件包而污染您的 php 安装,这些依赖项和软件包最终会因版本不兼容而相互冲突。最后,也是最重要的一点,dockerizing 应用程序将为您的生产环境提供可复制的配方。
即使你不选择这种方法,也可以看看docker。它会让你的工作变得更容易,而且它是当今开发中使用的“工具”。
答案2
使用 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)来使用它们