如何在不使用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
相关产品推荐
相关产品推荐

