白屏最常见原因是display_errors=Off导致错误被静默屏蔽;应先在脚本顶部加error_reporting(E_ALL); ini_set('display_errors','1'); ini_set('display_startup_errors','1')强制显示错误,若仍空白则检查php.ini中error_log路径并查看日志。

白屏先看错误是否被屏蔽
页面完全空白、没内容也没报错,大概率是PHP错误被静默吞掉了。默认生产环境会关掉display_errors,导致致命错误(比如语法错、文件没找到、函数不存在)不显示,只返回空响应。
最直接的办法:在出问题的PHP文件(如index.php或create.php)第一行、严格无空格无BOM的位置,加上这三行:
<?php error_reporting(E_ALL);ini_set('display_errors', '1');ini_set('display_startup_errors', '1');?>
保存后刷新,如果立刻出现红色错误提示,说明问题已暴露;如果还是白屏,说明错误发生在PHP解析阶段(比如文件开头就有语法错误),得靠日志查。
错误日志才是真实线索
PHP不会把所有错误都吐到页面上,尤其display_errors=Off时,所有错误都会写进error_log文件。这个文件路径必须可写,且Web服务器进程(如www-data或nginx)有权限写入。
立即学习“PHP免费学习笔记(深入)”;
快速定位方法:
- 建个
info.php,内容为<?php phpinfo(); ?>,浏览器打开,找“error_log”和“Loaded Configuration File”这两项 - 确认日志路径(如
/var/log/php_errors.log)存在,执行:sudo chown www-data:www-data /var/log/php_errors.log && sudo chmod 644 /var/log/php_errors.log - 在出问题脚本顶部加一句:
error_log("DEBUG START", 0);,然后终端运行:tail -n 20 /var/log/php_errors.log,看有没有这条记录和后续报错
表单提交白屏重点盯这几个环节
你用action="/crud/create.php"提交,但主页面又require('./read.php'),这两个地方最容易崩:
-
require('./read.php')失败:路径写错、read.php本身有致命错误、文件权限不够(比如755不够,需确保Web用户可读) -
create.php执行中断:数据库连接失败、SQL语句写错、POST数据没校验就直接用、mysqli_fetch_array($sqlAccounts)里$sqlAccounts根本没定义或查询返回false - 常见低级错误:漏分号、括号不配对、中文标点混入、UTF-8 BOM头——这些都会让PHP直接解析失败
建议在create.php开头也加那三行错误显示代码,并用var_dump($_POST); exit;确认数据是否传进来了。
别忽略服务器和配置层面
有时候不是代码问题,而是环境卡住了:
-
Web服务器没交由PHP处理:右键白屏页 → “查看网页源代码”,如果看到满屏
<?php ... ?>,说明PHP引擎根本没启动,是Apache/Nginx配置漏了.php解析规则 -
.htaccess写错了(仅Apache):临时重命名为
.htaccess.bak试试,如果恢复正常,就是伪静态规则有问题 -
内存或超时限制太小:检查
php.ini里memory_limit(建议至少128M)、max_execution_time(建议至少60秒) -
扩展没开:比如用了
mysqli但没启用,运行php -m | grep mysqli确认



















