浏览器下载test.php而非执行,说明Apache未加载PHP模块或未注册.php处理器:需检查httpd.conf中LoadModule和AddHandler行是否启用、路径与PHP版本匹配,并重启全部服务。

浏览器直接下载 test.php 而不是执行
这是最典型的症状,说明 Apache 根本没把文件交给 PHP 解析器处理。根本原因通常是 Apache 没加载 PHP 模块,或没注册 .php 后缀的处理器。
- 检查
httpd.conf中这两行是否取消注释且路径正确(注意版本号要和你当前启用的 PHP 一致):LoadModule php8_module "C:/wamp64/bin/php/php8.2.12/php8apache2_4.dll" AddHandler application/x-httpd-php .php
- 如果你用的是 PHP 8.0+,
php8_module名称必须匹配;旧版是php7_module,错一个字符就失效。 -
AddHandler行不能写成AddType,也不能漏掉空格或拼错 MIME 类型。 - 修改后必须重启所有服务(右键托盘图标 → “Restart All Services”),只重启 Apache 不够——PHP 模块是 Apache 启动时加载的。
localhost/test.php 显示空白或 404
先确认文件真正在正确位置:WAMP 的网站根目录默认是 C:\wamp64\www,不是桌面、不是项目文件夹、也不是 C:\wamp64 根目录。
- 把
test.php放进C:\wamp64\www\test.php,然后访问<a href="https://www.php.cn/link/983379e5eacf56a55f44720792d81bc2">https://www.php.cn/link/983379e5eacf56a55f44720792d81bc2</a>。 - 如果改过 Apache 端口(比如改成 8080),地址必须带端口:
<a href="https://www.php.cn/link/b02a8554744141829dd099670b93b968">https://www.php.cn/link/b02a8554744141829dd099670b93b968</a>。 - 如果 WAMP 图标不是绿色,说明 Apache 或 MySQL 没起来——常见原因是端口冲突(IIS、Skype、SQL Server Reporting Services 占用 80/3306),用托盘菜单里的 “Test Port 80” 快速验证。
- 404 时别急着改配置,先打开
C:\wamp64\logs\apache_error.log,看最后一行有没有明确报路径或模块错误。
页面显示 PHP 源代码而不是执行结果
这说明 PHP 模块已加载,但解析规则没生效,大概率是短标签开关或处理器绑定问题。- 打开当前启用的 PHP 版本对应的
php.ini(托盘 → PHP → php.ini),搜索short_open_tag,确保设为:short_open_tag = On
否则echo 'hi'; ?>这种写法会被忽略,只剩纯文本。 - 同时确认
httpd.conf里没有重复或冲突的AddHandler行(比如多写了.phps但漏了.php)。 - 修改
php.ini后只需重启 PHP 服务(托盘 → PHP → Restart),不用重启 Apache——但很多人会顺手全重启,也没坏处。
命令行能跑 php -v,但浏览器不行
这说明 PHP 本身没问题,问题出在 Apache 和 PHP 的桥接上。
- 命令行 PHP 和 Apache 模块 PHP 是两个独立实例,路径可能不同。命令行用的是
php.exe,Apache 用的是php8apache2_4.dll。 - 检查
httpd.conf中LoadModule指向的 DLL 文件是否存在、是否被杀毒软件误删、是否权限不足(尤其重装过系统或用了非管理员账户安装)。 - 如果你手动改过环境变量 PATH 加了 PHP 路径,那只是让命令行可用,对 Apache 完全无效——它只认自己配置里写的 DLL 路径。
WAMP 的核心逻辑其实很朴素:Apache 收到请求 → 根据后缀匹配处理器 → 调用 PHP 模块 → 返回输出。任何一环断开,表现都不同。别跳步,按现象反推哪一环卡住,比盲目重启更省时间。



















