浏览器下载.php文件说明服务器未执行php,根本原因是web服务器(apache/nginx)未正确配置php处理器:apache需加载php_module并配addhandler与addtype,nginx需配置fastcgi_pass和script_filename,且必须通过http://而非file://协议访问。

浏览器直接下载 .php 文件,说明 Web 服务器根本没执行它,而是把它当普通二进制文件返回了。这不是 PHP 代码的问题,是服务端配置缺失或错位。
你是不是用 file:// 直接双击打开的?
这是最常见也最容易被忽略的误操作。浏览器无法解析 PHP —— 它只负责渲染 HTML、执行 JS。PHP 必须由 Web 服务器(如 Apache、Nginx)和 PHP 解释器协同处理后,把结果发给浏览器。
- ✅ 正确访问方式:
http://localhost/info.php或http://127.0.0.1/test.php - ❌ 错误方式:双击文件,地址栏显示
file:///D:/project/info.php—— 此时浏览器只会读源码或触发下载 - 本地快速验证:终端进入项目目录,运行
php -S localhost:8000,然后访问http://localhost:8000/info.php
Apache 没加载 PHP 模块或没绑定 .php 扩展名
即使装了 PHP,Apache 默认也不会理 .php 文件,除非明确告诉它“这个后缀交给 PHP 处理”。关键配置缺一不可:
- 确认
LoadModule php_module(或类似php7_module)在httpd.conf中未被注释 - 必须有
AddHandler application/x-httpd-php .php—— 注意不是AddType,后者只设 MIME,不触发解析 - 推荐同时加上
AddType application/x-httpd-php .php,避免某些旧配置漏掉 handler - 改完配置后务必重启 Apache:
sudo systemctl restart apache2(Linux)或点 XAMPP/WAMP 面板上的 Restart
Nginx 没配 fastcgi_pass 或 SCRIPT_FILENAME 错了
Nginx 不像 Apache 那样靠模块直连 PHP,它必须把请求转发给 PHP-FPM 进程。少一个环节,.php 就变成静态文件。
-
location ~ \.php$ {块里必须有fastcgi_pass,指向 PHP-FPM 监听地址(如127.0.0.1:9000或 socket 路径) -
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;缺失会导致 502 或空白页 —— 这行告诉 PHP-FPM “要执行哪个文件” - 必须包含
include fastcgi_params;(或fastcgi.conf),否则SCRIPT_NAME、QUERY_STRING等参数全丢 - 检查 PHP-FPM 是否运行:
sudo systemctl status php-fpm;端口冲突时(如 9000 被占),要同步改php-fpm.conf和 Nginx 配置
响应头里混进了 Content-Disposition: attachment
这通常不是服务器配置问题,而是 PHP 脚本自己或中间件(如某些 CMS、下载逻辑)偷偷加了强制下载头。哪怕只有一行 header('Content-Disposition: attachment; filename="a.php"');,浏览器就会放弃执行,转而下载整个 PHP 源文件。
- 用浏览器 F12 → Network → 点开那个 .php 请求 → 查看 Response Headers,搜
Content-Disposition - 检查 PHP 文件开头是否有空格/BOM、
echo、var_dump等提前输出;一旦有输出,header()就失效,但脚本可能继续执行并输出源码 - 临时加一句
if (headers_sent($file, $line)) { die("Headers already sent in $file on line $line"); }定位输出源头
真正卡住人的地方往往不是技术多复杂,而是你以为在“运行 PHP”,其实连 Web 服务器那关都没过 —— 它压根没收到让 PHP 解析的指令。先确认访问协议、再盯死 handler/fcgi 配置、最后查响应头,三层过滤下来,90% 的“下载 PHP 文件”问题就定位清楚了。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











