PHP页面白屏主因是错误被静默屏蔽,需开启display_errors和E_ALL;ArrayList非PHP原生类,应改用array;输出数组须用print_r/var_dump而非echo;注意输出缓冲和header冲突,并优先查PHP错误日志定位问题。

PHP 页面白屏但没报错,先确认是否启用了错误显示
白屏最常见原因是 PHP 错误被静默吞掉,尤其是 display_errors 关闭且 error_reporting 级别过低。不是代码没执行,而是执行出错后不输出任何内容(包括空白)。
- 在脚本开头加
error_reporting(E_ALL); ini_set('display_errors', '1');,看是否爆出Fatal error: Uncaught Error: Class 'ArrayList' not found类似提示 - 检查 php.ini:确认
display_errors = On、error_reporting = E_ALL,改完记得重启 Web 服务(如 Apache 或 PHP-FPM) - 若用 Nginx + PHP-FPM,还要确认
php_admin_flag[display_errors] = on在 pool 配置中未被强制关闭
PHP 里根本没有 ArrayList 类,别直接 new ArrayList()
PHP 原生不提供 ArrayList —— 这是 Java/C# 的概念。直接写 new ArrayList() 会触发 Class 'ArrayList' not found 致命错误,导致白屏。
- PHP 用
array或[]就是动态数组,等效于 ArrayList:例如$list = [];、$list[] = 'item'; - 若项目引入了第三方库(比如某些旧版 PEAR 扩展或自定义类),需确认该类文件已
require或自动加载(Composer autoload)成功 - 检查命名空间:如果类在
Some\Util\ArrayList下,必须use Some\Util\ArrayList;或写全名new \Some\Util\ArrayList()
输出 array 内容时用了 echo/print 而不是 print_r/var_dump
直接 echo $arr 或 print $arr 会导致白屏或报 Array to string conversion 警告(开启错误显示后可见),因为 PHP 不允许把数组当字符串输出。
- 调试输出数组请用
print_r($arr);、var_dump($arr);或更安全的echo '' . htmlspecialchars(print_r($arr, true)) . '
'; - 若想 JSON 化输出(如给前端用),用
header('Content-Type: application/json'); echo json_encode($arr, JSON_UNESCAPED_UNICODE); - 注意
json_encode对资源、闭包、循环引用会返回false,需检查返回值避免输出空字符串导致“看似白屏”
页面白屏还可能是 output buffering 或 header 冲突
即使数组输出逻辑正确,也可能因输出控制异常导致浏览器收不到内容。
立即学习“PHP免费学习笔记(深入)”;
- 检查是否有
ob_start()后忘记ob_end_flush(),或中间发生 fatal error 导致缓冲区未释放 - 确认没有在输出数组前调用
header()(比如跳转或设 ContentType)后又尝试输出 HTML/文本,会触发headers already sent错误(默认不显示) - 查看 PHP 错误日志(
error_log配置路径),比页面更可靠:常见位置是/var/log/php_errors.log或 Apache 的error_log
白屏问题真正难定位的,往往不是语法错,而是错误被层层屏蔽——从 php.ini 到 web server 配置再到输出缓冲链路,每一环都可能吃掉报错信息。动手前先查日志,比反复改 echo 更省时间。











