You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用PHP-FPM的情况下让Apache同时运行PHP7.2与7.4项目?

实现Apache同时运行不同PHP版本项目的方案

由于mod_php无法同时加载两个PHP版本,我们可以通过CGI模式为不同虚拟主机指定对应PHP版本,具体操作如下:

1. 安装PHP CGI组件

确保两个PHP版本的CGI包已安装:

# 安装PHP7.2 CGI
sudo apt install php7.2-cgi
# 安装PHP7.4 CGI
sudo apt install php7.4-cgi

2. 启用Apache CGI模块

如果未启用CGI模块,先执行以下命令:

sudo a2enmod cgi
sudo systemctl restart apache2

3. 配置项目专属虚拟主机

假设PHP7.2项目域名为old-project.com,PHP7.4新项目域名为new-project.com,分别配置虚拟主机:

PHP7.2项目的虚拟主机配置

创建或编辑配置文件/etc/apache2/sites-available/old-project.conf:

<VirtualHost *:80>
    ServerName old-project.com
    DocumentRoot /var/www/old-project

    # 指定使用PHP7.2 CGI处理.php文件
    ScriptAlias /php72-cgi /usr/bin/php7.2-cgi
    AddHandler php72-cgi .php
    Action php72-cgi /php72-cgi
    <Directory /var/www/old-project>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

PHP7.4项目的虚拟主机配置

创建或编辑配置文件/etc/apache2/sites-available/new-project.conf:

<VirtualHost *:80>
    ServerName new-project.com
    DocumentRoot /var/www/new-project

    # 指定使用PHP7.4 CGI处理.php文件
    ScriptAlias /php74-cgi /usr/bin/php7.4-cgi
    AddHandler php74-cgi .php
    Action php74-cgi /php74-cgi
    <Directory /var/www/new-project>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

4. 禁用全局mod_php(关键步骤)

避免全局mod_php与CGI模式冲突,执行以下命令:

sudo a2dismod php7.2 php7.4
sudo systemctl restart apache2

5. 启用虚拟主机并重启Apache

sudo a2ensite old-project.conf new-project.conf
sudo systemctl restart apache2

验证配置

在两个项目的根目录分别创建phpinfo.php文件(内容为<?php phpinfo(); ?>),访问对应域名查看PHP版本,确认是否与项目要求匹配。


内容的提问来源于stack exchange,提问作者Martin AJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 00:22:07