我在服务器上安装了两个 PHP 版本
7.2
和 7.4
。两者也都已启用。
有一个使用 PHP 运行的项目
7.2
。我需要使用 PHP 运行一个新项目7.4
。正如我所提到的,我不使用 PHP-FPM。经过一番研究,我应该使用 a2dismod php7.2
和 a2denmod php7.4
来停止 7.2
并启动 7.4
版本。但在这种情况下,当前的工作项目将停止工作,因为它与 ver 7.2
兼容。
那么,知道如何配置 Apache 来处理在同一服务器上运行的两个不同项目,一个使用 PHP
7.2
,另一个使用 7.4
而不使用 PHP-FPM?
当您使用 PHP 作为 Apache 模块时,据我所知,每个服务器实例只能加载一个 PHP 模块。
与 PHP-FPM 所做的类似,您可以运行两个 Apache 服务器实例。一个配置了 PHP 7.2 模块,另一个配置了 PHP 7.4 模块。
鉴于 PHP 7.2 模块 Apache 是当前服务器实例,它将把 PHP 7.4 应用程序的虚拟主机代理到新的第二个 Apache 服务器实例。
这与 Nginx 和两个 PHP-FPM 相当,只是 Apache 和 Apache 的布局不同。
+----------------------------------------------------+
| +-------------+ + pool #1 |
| ,----> | PHP-FPM 7.2 | + pool #2 |
| +-------+ <--' +-------------+ + ... |
WAN <====> | Nginx | |
| +-------+ <--. +-------------+ + pool #1 |
| '----> | PHP-FPM 7.4 | + ... |
| +-------------+ |
+----------------------------------------------------+
+------------------------------------+
| +---------+ +---------+ |
WAN <=====> | Apache | <---> | Apache | |
| |.........| |.........| |
| | PHP 7.2 | | PHP 7.4 | |
| +---------+ +---------+ |
+------------------------------------+
据我所知,您只能对主服务器实例使用 a2denmod(1) 等标准实用程序。因此,请让自己熟悉服务器配置,Apache 有很好的文档记录,我个人非常喜欢它的配置。也许我是从 Apache 1.3 开始的。
然而,现在已经是 2023 年了,Nginx + PHP-FPM 是一个非常好的组合。 Vanilla Nginx 是一个相当不错的强大工具。