php页面空白主因是php未执行或错误被静默忽略;需先用phpinfo()验证php是否运行,再检查服务器配置、bom编码、错误报告设置及语法错误。

PHP写第一个网页显示空白,大概率不是代码没写对,而是PHP根本没执行——错误被静默吞掉、服务器没解析、文件带BOM、或语法错到连ini_set()都跑不起来。
phpinfo() 都不显示?先确认 PHP 是否真在运行
别急着改代码,先验证环境是否就绪。新建一个 test.php,内容只有一行:<?php phpinfo(); ?>。访问它,如果仍是空白:
- 右键「查看网页源码」:如果看到原样输出的
<?php phpinfo(); ?>,说明 Apache/Nginx 没把 .php 交给 PHP 解析,而是当纯文本返回了 - 用
curl -I http://localhost/test.php看响应头:若Content-Type: text/plain或text/html且无 PHP 输出痕迹,就是 Web 服务器配置缺失 - 检查 Apache 的
httpd.conf是否有LoadModule php_module和AddType application/x-httpd-php .php;Nginx 则要确认location ~ \.php$块里fastcgi_pass指向了正确的 PHP-FPM 地址(如127.0.0.1:9000)
phpinfo() 能显示,但自己写的页面还是空白
说明 PHP 环境正常,问题出在你的脚本本身。此时最常踩的坑是:
-
display_errors = Off+error_reporting = 0:致命错误(如语法错、未定义函数)发生时,页面直接空掉,连 HTTP 状态码都可能是 200 - 文件开头有 UTF-8 BOM:Windows 记事本保存的文件可能含不可见字节
ef bb bf,导致headers already sent被抑制,页面变白 - 脚本第一行之前有空格、换行或空行:哪怕只有一个空格,也会触发输出,让后续
session_start()或header()失败 - 用了已废弃函数(如
mysql_query())且没开错误报告:PHP 8+ 已移除该函数,调用即 fatal error,但默认不提示
怎么快速暴露错误?三行代码顶半天
在你 PHP 文件最顶部、任何输出之前(包括空行),加这三行:
<?php ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
?>
注意:ini_set() 必须放在最开头,否则一旦前面有输出(哪怕是个空格),就会报 headers already sent 并可能继续空白;如果加了这三行仍没错误显示,说明脚本在解析阶段就挂了——这时只能靠命令行检测:
- 终端进入文件目录,运行
php -l index.php:返回Errors parsing index.php就是语法错,按提示行号查括号、分号、引号是否配对 - 检查是否用了短标签
:若php.ini中short_open_tag = Off,必须改用<?php - 用 VS Code 或 Notepad++ 查看文件编码,另存为
UTF-8 无 BOM
错误还是看不到?去日志里翻
浏览器不显示,不等于没错误。PHP 错误会记进日志,前提是配置到位:
- 确认
php.ini中log_errors = On且error_log指向可写路径(如/var/log/php_errors.log) - Apache 用户日志通常在
/var/log/apache2/error.log,Nginx + PHP-FPM 的错误则多在/var/log/php-fpm.log或/var/log/nginx/error.log - 如果日志路径不可写,PHP 会静默丢弃错误——这是新手最容易忽略的细节
真正卡住人的,往往不是语法错,而是错误报告关了、日志路径没权限、或者 BOM 和空格藏在肉眼看不见的地方。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











