在Apache配合PHP-FPM的运行架构中,默认仅对.php后缀文件转发PHP解析请求,若需要让.html后缀的文件也能执行PHP代码,需要针对性调整服务配置。下面分步骤说明完整实现方法。

前置条件检查
首先确认环境已经满足基础要求:
- 已安装Apache 2.4及以上版本,并且启用了
mod_proxy和mod_proxy_fcgi模块 - 已安装PHP-FPM服务,并且PHP版本与项目需求匹配
- 已经可以通过.php文件正常执行PHP代码,证明基础联动没有问题
PHP-FPM进程池配置
首先确认PHP-FPM的监听方式,通常有两种:socket文件和TCP端口。打开PHP-FPM的进程池配置文件,一般路径为/etc/php/8.x/fpm/pool.d/www.conf,检查监听配置:
; 如果是socket监听,确保路径正确,注意权限 listen = /run/php/php8.x-fpm.sock listen.owner = www-data listen.group = www-data listen.mode = 0660 ; 如果是TCP端口监听,配置如下 ; listen = 127.0.0.1:9000
修改完成后重启PHP-FPM服务使配置生效:
sudo systemctl restart php8.x-fpm
Apache全局配置方式
如果希望所有虚拟主机都支持HTML文件解析PHP,可以修改Apache的主配置文件,一般路径为/etc/apache2/apache2.conf,在文件末尾添加如下规则:
<IfModule mod_proxy_fcgi.c>
# 匹配.html后缀的文件,转发给PHP-FPM处理
<FilesMatch "\.html$">
SetHandler "proxy:unix:/run/php/php8.x-fpm.sock|fcgi://localhost"
# 如果是TCP端口监听,替换为如下配置
# SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</IfModule>如果是TCP端口监听的PHP-FPM,把上面的SetHandler替换为SetHandler "proxy:fcgi://127.0.0.1:9000"即可。配置完成后重启Apache服务:
sudo systemctl restart apache2
单虚拟主机配置方式
如果只需要在某个特定站点生效,无需修改全局配置,直接在虚拟主机配置文件里添加规则即可,虚拟主机配置文件一般在/etc/apache2/sites-available/目录下:
<VirtualHost *:80>
ServerName example.ipipp.com
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
<IfModule mod_proxy_fcgi.c>
# 仅对该站点生效的HTML解析规则
<FilesMatch "\.html$">
SetHandler "proxy:unix:/run/php/php8.x-fpm.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
</VirtualHost>启用虚拟主机后重启Apache即可生效:
sudo a2ensite 你的虚拟主机配置文件名 sudo systemctl restart apache2
效果验证
在网站根目录创建一个测试文件test.html,内容如下:
<?php phpinfo(); ?>
通过浏览器访问http://你的域名/test.html,如果看到PHP信息页面,说明配置成功。如果页面直接显示源代码,需要检查Apache模块是否启用、PHP-FPM是否正常运行、SetHandler的路径是否和PHP-FPM监听配置匹配。
注意事项
- 开启HTML文件解析PHP后,所有HTML文件都会被交给PHP-FPM处理,会增加少量服务器开销,如果站点静态HTML文件较多,建议仅对需要执行PHP的目录配置该规则
- 如果使用了伪静态规则,注意规则优先级,避免伪静态规则覆盖了PHP解析规则
- 修改配置后一定要重启对应的服务,否则配置不会生效
ApachePHP-FPMHTML解析PHP虚拟主机配置mod_proxy_fcgi修改时间:2026-05-25 14:20:25