添加PHP include语句后页面显示原始代码,无法正常加载求助
<?php include('functions.php') ?>后页面显示原始代码? 这种情况我碰到过好多次,大概率是PHP代码没被服务器正确解析,或者相关配置出了问题,下面给你拆解几个最可能的原因和排查步骤:
Web服务器没配置PHP解析(最常见)
首先得确认两件事:- 你的页面文件名是不是
.php后缀?比如如果是login.html,服务器默认不会去解析里面的PHP代码,直接把所有内容当文本输出。赶紧改成login.php试试。 - 你的Web服务器(Apache/Nginx之类的)有没有正确安装并配置PHP模块?比如Apache需要加载
mod_php模块,并且在配置文件里设置.php文件由PHP处理器处理;Nginx需要配置fastcgi_pass指向PHP-FPM的地址。可以先创建一个简单的test.php,内容写<?php echo "Hello PHP!"; ?>,访问这个文件,如果显示的是原始代码而不是"Hello PHP!",那肯定是服务器没配置好PHP解析。
- 你的页面文件名是不是
被include的
functions.php存在语法错误
如果functions.php里有未闭合的引号、括号,或者其他语法问题,PHP解析器可能会直接中断,导致后续的HTML和PHP代码都被当成纯文本输出。你可以先把include语句注释掉(改成<?php // include('functions.php') ?>),如果页面能正常显示登录界面,那问题就出在functions.php上。用终端命令php -l functions.php可以快速检查这个文件的语法错误,它会告诉你哪里出了问题。include的文件路径不对
如果functions.php不在当前脚本的同一目录下,include会失败。虽然一般来说这种情况会输出错误信息,但如果服务器的错误显示配置关闭了,也可能间接导致代码显示。可以试试用绝对路径来include,比如:<?php include($_SERVER['DOCUMENT_ROOT'] . '/path/to/functions.php'); ?>把
/path/to/换成实际的路径,确保能找到functions.php。你是直接打开本地文件而非通过服务器访问
如果你是双击打开本地的.php文件(URL是file:///xxx/login.php),浏览器根本不会去解析PHP代码,直接显示所有内容。必须通过服务器的URL访问,比如http://localhost/login.php或者你的域名地址。
排查的时候可以按这个顺序来,先解决最常见的服务器配置和文件名问题,再逐步排查其他可能性。
内容的提问来源于stack exchange,提问作者Tee

