白屏时先看PHP是否真在执行:若浏览器源码中可见<?php等原始代码,说明Web服务器未解析PHP,而是将其作为纯文本返回,根本未交由PHP引擎执行。

白屏时先看 PHP 是否真在执行
页面空白但浏览器源码里能看到 <?php 原样输出,说明 Web 服务器根本没把请求交给 PHP 解析器。这不是代码问题,是环境配置断链。
用 curl -I http://localhost/index.php 查响应头:Content-Type: text/plain 或 text/html(不含 PHP 执行痕迹)就是铁证。常见原因:
- Apache 没加载
libphp.so或缺失AddHandler application/x-httpd-php .php - Nginx 的
location ~ \.php$块丢失,或fastcgi_pass指向了错误的 PHP-FPM 地址(比如写成127.0.0.1:9001但实际监听的是:9000) - PHP-FPM 进程未运行:
systemctl status php-fpm看状态,journalctl -u php-fpm -n 20看最近日志
加三行强制让错误浮出来
如果源码不显示、页面真空白,说明 PHP 至少启动了,但错误被静默吞掉。在 public/index.php(或你项目的入口文件)最顶部、任何 require 之前插入:
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
注意:这三行必须在第一行 PHP 标签后立即出现,不能有空行、BOM、UTF-8 签名。如果加完仍空白,大概率是解析期错误(比如漏括号、错引号)卡在更早阶段——此时只能查日志。
立即学习“PHP免费学习笔记(深入)”;
查 PHP 错误日志比等报错更可靠
Linux 下 display_errors = Off 是默认行为,所有错误都会进日志,而不是消失。别猜,直接看:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 先用
php --ini找到生效的php.ini路径 - 在该文件里搜
error_log,确认路径(如/var/log/php/error.log) - 检查权限:
ls -l /var/log/php/,确保www-data或nginx用户可写 - 如果日志为空,回 php.ini 确认
log_errors = On,然后重启 PHP-FPM 和 Web 服务
重点盯 Fatal error、Parse error、Segmentation fault —— 白屏基本由它们引起。
.env 文件里的 # 会无声杀死数据库连接
ThinkPHP、Laravel 等框架用 phpdotenv 加载 .env,它把 # 当注释起始符。例如:
DATABASE_PASSWORD=myPass#word123
会被截成 myPass,后续拼接 DSN 时变成空值,最终触发 include(): Filename cannot be empty 或 PDO 连接失败,且不报具体哪一行——只留白屏。
修复方式很简单:所有含 #、@、$、空格的值,必须加双引号:
DATABASE_PASSWORD="myPass#word123"
改完记得清框架缓存(如 ThinkPHP 的 php think clear),否则旧配置还在 runtime 里生效。
真正麻烦的不是报错,而是那些连日志都不留痕的情况:比如文件开头有 BOM、output_buffering 卡住 fatal error、或者 opcache 缓存了损坏的字节码。遇到反复白屏又无日志线索,先试 php -d opcache.enable=0 your_file.php 绕过 OPcache,再逐个排除。


















