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

Apache+PHP 如何为每个VHost配置使用不同的已安装PHP版本?

解决Apache多站点指定不同PHP版本的方案

完全可以实现每个VHost独立指定PHP版本,你之前操作繁琐是因为用了Apache的mod_php模块,该模块只能全局生效,换成**PHP-FPM(FastCGI进程管理器)**搭配Apache的proxy_fcgi模块即可实现站点级的PHP版本隔离。


操作步骤

1. 安装对应版本的PHP-FPM

你需要先安装用到的所有PHP版本对应的FPM包,Ubuntu下可通过ppa:ondrej/php源安装多版本PHP,对应命令:

# 若还没添加ondrej/php源先执行
sudo add-apt-repository ppa:ondrej/php
sudo apt update

# 安装你需要的版本FPM包
sudo apt install php5.6-fpm php7.4-fpm php8.0-fpm

2. 调整Apache模块配置

首先禁用所有版本的mod_php,启用FPM需要的代理模块:

# 禁用所有mod_php版本
sudo a2dismod php*
# 启用必要模块
sudo a2enmod proxy proxy_fcgi setenvif
# 重启Apache使模块配置生效
sudo systemctl restart apache2

3. 为每个VHost指定PHP版本

编辑你的VHost配置文件(一般存放在/etc/apache2/sites-available/目录下),在对应站点的<VirtualHost>标签内添加对应PHP版本的FPM处理器配置即可,示例如下:

example1.local(PHP7.4)配置示例

<VirtualHost *:80>
    ServerName example1.local
    DocumentRoot /var/www/example1
    <Directory /var/www/example1>
        AllowOverride All
        Require all granted
    </Directory>
    # 指定使用PHP7.4-FPM
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

其他站点对应配置修改

只需要修改上面SetHandler行里的sock文件名即可:

  • example2.local、example3.local用PHP8.0:替换为php8.0-fpm.sock
  • example4.local用PHP5.6:替换为php5.6-fpm.sock

4. 生效配置

所有VHost修改完成后,先检查配置语法是否正确:

sudo apache2ctl configtest

返回Syntax OK后重载Apache即可生效:

sudo systemctl reload apache2

注意事项

  • 需确保对应版本的PHP-FPM服务处于运行状态,可执行sudo systemctl status php<版本号>-fpm查看,异常时可执行sudo systemctl start php<版本号>-fpm启动,需要开机自启可执行sudo systemctl enable php<版本号>-fpm
  • 各PHP版本的配置文件独立,比如PHP7.4的php.ini路径为/etc/php/7.4/fpm/php.ini,修改对应版本的配置后只需重启对应FPM服务即可,无需重启Apache

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:36:04