服务器未正确解析 PHP 文件导致显示源码,主因有四:一、PHP模块未安装或未启用;二、文件未经Web服务器访问;三、扩展名或MIME类型配置错误;四、PHP短标签未启用且代码含短标签。

如果您在浏览器中直接打开 PHP 文件,却看到的是原始代码而非执行结果,则说明服务器未正确解析 PHP 文件。以下是导致该现象的常见原因及对应排查方法:
一、服务器未安装或启用 PHP 模块
Web 服务器(如 Apache 或 Nginx)本身不具备执行 PHP 的能力,必须通过加载 PHP 解释器模块才能处理 .php 文件。若模块未安装或未启用,服务器会将 PHP 文件当作纯文本返回给浏览器。
1、检查 Apache 是否加载了 php_module:运行 httpd -M | grep php 或 apache2ctl -M | grep php,确认输出包含 php_module。
2、检查 Nginx 配置中是否包含 fastcgi_pass 指令,并指向正在运行的 PHP-FPM 进程(如 127.0.0.1:9000)。
立即学习“PHP免费学习笔记(深入)”;
3、验证 PHP-FPM 服务状态:执行 systemctl is-active php-fpm,返回 active 表示服务已运行。
二、文件未通过 Web 服务器访问
PHP 是服务端脚本语言,必须经由 Web 服务器(如 http://localhost/info.php)请求,才能触发解析。若直接双击打开文件(file:///path/to/file.php)或使用 Live Server 插件但未配置 PHP 支持,浏览器仅读取文件内容,不发送至 PHP 解释器。
1、确保使用本地服务器地址访问,例如 http://localhost/test.php,而非 file:///home/user/test.php。
2、确认 Web 根目录(如 /var/www/html 或 XAMPP 的 htdocs)中存放 PHP 文件,并通过对应 URL 访问。
3、若使用 VS Code 的 Live Server 插件,需知其默认仅支持静态文件;应改用 PHP Server 扩展或启动内置服务器:php -S localhost:8000。
三、文件扩展名或 MIME 类型配置错误
服务器依据文件扩展名决定如何处理资源。若 .php 扩展未被关联到 PHP 处理器,或响应头中 Content-Type 错误地设为 text/plain,浏览器将显示源码而非渲染结果。
1、检查 Apache 的 mime_module 是否启用,并确认存在 AddType application/x-httpd-php .php 类似指令。
2、查看响应头:在浏览器开发者工具的 Network 选项卡中,选中 PHP 请求,确认 Content-Type 值为 text/html,而非 text/plain 或 application/octet-stream。
3、检查是否存在拼写错误,例如文件命名为 index.ph 或 test.PHP(大小写敏感场景下可能不匹配规则)。
四、PHP 短标签未启用且代码含
当 PHP 代码使用短标签 ... ?>(非标准 ),而 php.ini 中 short_open_tag 设置为 Off,则解释器跳过该段代码,导致部分逻辑未执行,甚至整个文件被当作纯文本输出。
1、打开 php.ini 文件,查找 short_open_tag 行,将其值改为 On。
2、重启 Web 服务器与 PHP-FPM 服务使配置生效。
3、统一改用标准开启标签 编写代码,避免依赖 short_open_tag 设置。
五、.htaccess 或 Nginx 配置覆盖默认行为
在 Apache 环境中,.htaccess 文件可重写处理规则;在 Nginx 中,location 块可能错误地将 .php 文件映射为 static 文件处理。此类配置会绕过 PHP 解析流程。
1、检查网站根目录是否存在 .htaccess 文件,搜索含 AddHandler、RemoveHandler 或 SetHandler none 的行。
2、检查 Nginx server 块中是否遗漏针对 .php 的 location 配置,或存在类似 location ~ \.php$ { deny all; } 的禁止规则。
3、临时重命名 .htaccess 为 .htaccess.bak 并重启 Apache,观察问题是否消失以确认其影响。











