addhandler application/x-httpd-php .php是mod_php模式下最常用写法,需确保在loadmodule之后;apache 2.4+推荐用sethandler application/x-httpd-php;php-fpm则须用proxypassmatch而非addhandler。

Apache配置PHP时,AddHandler 的写法要准确匹配PHP模块类型和文件扩展名,否则.php文件会被当成纯文本下载或直接显示源码。
基础写法(mod_php 模式下)
这是最常用、兼容性最好的写法,适用于 Linux/macOS 的 libphp.so 或 Windows 的 php8apache2_4.dll:
AddHandler application/x-httpd-php .php- 如需同时支持
.phtml,可写成:AddHandler application/x-httpd-php .php .phtml
注意:该指令必须放在有效的配置作用域内,比如 <virtualhost></virtualhost> 块中,或主配置文件的全局区域(确保在 LoadModule php_module ... 之后)。
更推荐的替代写法(Apache 2.4+)
现代 Apache 更倾向用 SetHandler 配合 <filesmatch></filesmatch>,它优先级更高、不易被 .htaccess 覆盖,也更清晰:
<filesmatch></filesmatch>SetHandler application/x-httpd-php
这个组合对多后缀(如 .php5、.inc.php)也更容易扩展,且绕过了 AddHandler 在某些 MPM(如 event)下的兼容性问题。
PHP-FPM 场景不适用 AddHandler
如果使用 PHP-FPM(生产环境推荐),就不该用 AddHandler 或 LoadModule php_module。此时应通过反向代理转发请求:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/
这条指令通常放在虚拟主机配置里,且需提前加载 proxy_fcgi 和 proxy 模块。
常见错误提醒
以下写法容易出问题,建议避开:
- 只写
AddType application/x-httpd-php .php—— 它只设 MIME 类型,不触发解析,已过时 -
AddHandler php-script .php—— 这是旧版 Apache 1.x 的写法,2.4+ 不识别,会失效 - 路径含空格未加引号,如
LoadModule php_module C:/Program Files/php/php8apache2_4.dll—— 必须用引号包裹:"C:/Program Files/php/php8apache2_4.dll"
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











