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

Azure App Service Linux环境下PHP 8中以PHP方式运行HTML文件失效问题

解决Azure App Service PHP 8下HTML文件无法解析PHP代码的问题

我之前也碰到过一模一样的情况,Azure App Service升级到PHP 8之后,原来基于mod_php的.htaccess配置确实会失效——因为现在Azure的Linux环境默认用的是PHP-FPM而非传统的mod_php了。下面是几个亲测有效的解决办法:

方法1:替换.htaccess中的AddType为SetHandler

把原来的AddType application/x-httpd-php .html .htm替换成下面的规则,强制让Apache对HTML/HTM文件使用PHP处理器:

<FilesMatch "\.(html|htm)$">
    SetHandler application/x-httpd-php
</FilesMatch>

这个规则会精准匹配所有.html和.htm文件,适配PHP-FPM的运行模式,让服务器正确解析文件中的PHP代码。

方法2:用AddHandler指令替代AddType

如果方法1没生效,可以试试换用AddHandler指令:

AddHandler application/x-httpd-php .html .htm

部分PHP-FPM环境下,AddHandler比AddType更适合关联文件类型与处理器,优先级也更高。

方法3:检查Azure App Service的基础配置权限

确保你的App Service允许.htaccess生效:

  • 登录Azure门户,进入你的App Service实例
  • 转到配置 > 常规设置,确认选中的PHP版本是你需要的8.x分支
  • 若使用Linux计划,默认AllowOverride是开启的,但如果之前有自定义过Apache配置,要确保AllowOverride All的规则存在(Azure通常默认配置好了,不用手动改,但若有异常可以检查)

方法4:排查REDIRECT_HANDLER返回NULL的问题

$_SERVER['REDIRECT_HANDLER']返回NULL说明你的.htaccess规则根本没触发处理器关联,这时候可以:

  • 确认.htaccess文件放在网站根目录(/home/site/wwwroot)下
  • 检查.htaccess是否有语法错误(可以用本地的Apache配置验证工具提前排查,Azure如果检测到错误也会在日志里提示)
  • 查看App Service日志:转到监测 > 日志流,查看Apache的错误日志,里面会有规则失效的具体原因

如果以上方法都不行,还可以尝试在配置 > 应用设置里添加PHP_INI_SCAN_DIR,值设为/home/site/wwwroot,然后在根目录创建php.ini文件,添加:

auto_prepend_file = /home/site/wwwroot/prepend.php

通过预加载PHP文件的方式间接处理HTML解析,但这个方法比较繁琐,优先用前面的.htaccess方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 17:07:33