根本原因是php未执行而被当纯文本返回;需先验证php是否运行,检查服务器配置、文件bom编码,并在代码首行添加错误报告指令定位问题。

Dreamweaver 运行 PHP 文件显示空白页,**根本原因几乎总是:PHP 没执行,而是被当纯文本返回了**——你看到的不是“PHP 出错了”,而是“服务器压根没理你的 .php 文件”。
检查 PHP 是否真在运行(最优先)
这是所有排查的起点。DW 的“在浏览器中预览”只是打开一个 URL,它不决定 PHP 是否生效;真正起作用的是你的本地服务器(如 XAMPP、MAMP、WAMP)或远程虚拟主机配置。
- 在 DW 里新建一个文件,保存为
test.php,内容只有一行:<?php echo 'PHP is running'; ?> - 用浏览器直接访问
http://localhost/test.php(不是双击打开,也不是用 DW 内置预览) - 如果看到
PHP is running→ PHP 正常,问题出在你自己的代码或路径上
如果看到完整源码(<?php echo ...)→ PHP 解析器完全没介入,是 Web 服务器配置问题
常见卡点:Apache 没加载 php_module,Nginx 的 location ~ \.php$ 块缺失或 fastcgi_pass 指向错误,或者虚拟主机未开启 PHP 支持。
确认文件编码无 BOM(Windows 用户高频踩坑)
用记事本、旧版 Notepad++ 或某些国产编辑器保存的 UTF-8 文件,开头会偷偷塞入三个不可见字节 EF BB BF(BOM)。PHP 一读到这仨字节,就立刻输出,导致后续 session_start()、header() 全报 “Headers already sent”,而错误又被静默吞掉,只剩空白。
立即学习“PHP免费学习笔记(深入)”;
- 用 VS Code 打开你的 PHP 文件,右下角看编码 → 点击它 → 选
Save with Encoding→UTF-8(注意不是UTF-8 with BOM) - 用命令行快速验证:
hexdump -C your_file.php | head -n1,如果开头是00000000 ef bb bf,就是带 BOM - 特别注意:DW 自带的“编码”菜单不可靠,别信它显示的“UTF-8”,得用外部工具确认
临时强制开启错误报告(绕过 php.ini 限制)
很多共享主机或云虚拟主机不允许改 php.ini,但你仍能用代码临时打开错误显示——前提是 PHP 至少解析到了这一行。
- 在你出问题的 PHP 文件**最顶部、第一行、没有任何空格或换行之前**,插入:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
如果加了这三行还是空白,说明连这行都没执行到 → 大概率是语法错误(比如漏括号、错用短标签 )或文件开头有隐藏字符。此时必须用 php -l your_file.php 命令行检查语法,或逐个注释包含文件排查。
别忽略 DW 自身缓存和路径陷阱
DW 有时会缓存旧的站点映射或预览行为,尤其当你改过本地服务器端口、文档根目录或用了符号链接时。
- 关闭 DW,删掉项目根目录下的
_dw隐藏文件夹(它存的是 DW 自己的缓存和站点配置) - 检查你 DW 里设置的“站点根目录”是否真对应
http://localhost/xxx的物理路径;路径错一个字母,DW 就可能预览错文件 - 右键 HTML/PHP 文件 → “在浏览器中预览” → 看地址栏 URL 是不是你预期的
localhost地址;如果不是,说明 DW 没走本地服务器,而是打开了本地文件协议file://,那 PHP 当然不会执行
真正容易被忽略的,是“你以为在跑 PHP,其实只是在看源码”这个认知偏差——所有排查动作,都要先回答一个问题:浏览器地址栏里,URL 是以 http:// 开头,还是 file:// 开头?前者才值得往下查代码,后者请先配好本地服务器。











