windows改后缀不生效因默认隐藏扩展名,需勾选“文件扩展名”后彻底删除旧后缀再添加.php;改后须置于本地php环境根目录并用http://localhost访问,否则仅作文本下载;macos/linux还需注意权限、换行符(应为lf)及错误显示设置。

Windows 文件资源管理器里改后缀不生效?
直接在文件名后面加 .php 通常没用,因为 Windows 默认隐藏已知文件扩展名,你看到的其实是 index,实际可能是 index.html 或 index.txt。强行重命名只会变成 index.php.html 这种双后缀,服务器根本不认。
- 先打开「文件资源管理器」→「查看」→ 勾选「文件扩展名」(关键!否则看不见真实后缀)
- 右键文件 → 「重命名」→ 把完整旧后缀删干净(比如删掉
.txt或.html),再输入.php - 如果系统弹窗警告“如果改变文件扩展名,可能会导致文件不可用”,点「是」——这是正常提示,不是错误
改完后浏览器打开还是下载或报错?
文件后缀只是个标签,真正决定是否执行 PHP 的是 Web 服务器(比如 Apache、Nginx)和 PHP 解释器是否在运行。单纯把 test.txt 改成 test.php,放在桌面双击打开,浏览器只会当纯文本显示或直接下载,不会执行里面写的 <?php echo 'hello'; ?>。
- 必须把文件放到本地 PHP 环境的 Web 根目录下(如 XAMPP 的
htdocs、WAMP 的www) - 确保 PHP 服务已启动,访问地址得是
http://localhost/test.php,不是file:///C:/.../test.php - 如果页面空白但没报错,检查 PHP 是否启用短标签:默认
?>不被识别,要用<?php ?>
Mac / Linux 下改后缀要注意权限和换行符
macOS 和 Linux 默认显示扩展名,但容易踩两个坑:一是文件权限不让 Web 服务器读取,二是 Windows 编辑器保存的 CRLF 换行可能引发某些 PHP 函数(比如 header())报“headers already sent”错误。
- 终端进到文件目录,用
mv oldname.html newname.php重命名(别用 Finder 右键改,有时不刷新) - 确认权限:运行
chmod 644 newname.php,避免因权限过高被 Web 服务器拒绝加载 - 用 VS Code 或 Sublime 打开,底部状态栏看换行符类型,选「LF」(Unix)而非「CRLF」(Windows)
PHP 文件里写错了代码,浏览器却只显示空白?
PHP 解析失败时默认不报错,尤其生产环境会关闭 display_errors,导致你改了后缀、放对位置、也访问对了 URL,结果一片空白——不是没运行,是运行到一半崩了但不告诉你。
立即学习“PHP免费学习笔记(深入)”;
- 临时开启错误显示:在文件开头加
<?php ini_set('display_errors', 1); error_reporting(E_ALL); ?> - 更可靠的方式是查 Web 服务器错误日志:Apache 在
logs/error.log,Nginx 在logs/error.log或logs/php_errors.log - 常见低级错误:
少写了php、漏了分号、引号中英文混用(“vs")、UTF-8 BOM 头导致输出提前











