温馨提示×

ubuntu php-fpm为何白屏

小樊
35
2026-10-07 07:33:00
栏目: 编程语言

Ubuntu 下 PHP-FPM 白屏(空白页 / White Screen of Death) 通常说明:
请求没报错,但页面没有输出,或者 错误被隐藏了。下面按最常见原因给你排查。


一、先确认是不是“真的白屏”

在浏览器里:

  • 查看 源代码(Ctrl+U):如果是空的 → 真白屏
  • 打开 开发者工具 → Network:看状态码
    • 200 → PHP 执行了但没输出
    • 500 → PHP 报错但被隐藏
    • 502 / 504 → PHP-FPM 没起来或超时

二、最常见原因(90% 在这里)

1️⃣ PHP 错误被隐藏(最常见)

默认生产环境会关错误显示。

检查 php.ini(注意是 FPM 的)

php --ini
# 或
/etc/php/8.x/fpm/php.ini

确认:

display_errors = On
error_reporting = E_ALL

然后重启:

sudo systemctl restart php8.x-fpm

临时调试也可以在 PHP 文件顶部加:

error_reporting(E_ALL);
ini_set('display_errors', 1);

2️⃣ PHP 代码 fatal error(但没显示)

常见:

  • 调用未定义函数
  • require 文件不存在
  • 类没加载(autoload 错)

看 PHP-FPM 日志:

sudo tail -f /var/log/php8.x-fpm.log

或 Nginx / Apache 错误日志:

sudo tail -f /var/log/nginx/error.log

3️⃣ Nginx 没正确连接 PHP-FPM

白屏 + 200,但无内容,常见配置错误。

Nginx 配置必须有:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.x-fpm.sock;
}

检查:

ls -l /run/php/php8.x-fpm.sock

重启:

sudo systemctl restart nginx php8.x-fpm

4️⃣ PHP-FPM 根本没运行

systemctl status php8.x-fpm

如果没运行:

sudo systemctl start php8.x-fpm

5️⃣ 文件权限问题(非常常见)

PHP 文件无法读取 → 白屏

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

6️⃣ 输出被缓冲 / 死循环

例如:

while(true){}
ob_start(); // 没 ob_end_flush()

7️⃣ 框架问题(Laravel / ThinkPHP 等)

  • .env 不存在
  • storage 没写权限
  • composer 没装依赖

Laravel 示例:

chmod -R 775 storage bootstrap/cache
composer install
php artisan config:clear

三、快速自检清单 ✅

php -v
systemctl status php8.x-fpm
tail -f /var/log/php8.x-fpm.log
tail -f /var/log/nginx/error.log

四、如果你愿意

你可以把下面信息发我,我可以直接帮你定位:

  1. Ubuntu 版本
  2. PHP 版本
  3. Nginx 还是 Apache
  4. 白屏页面的 HTTP 状态码
  5. /var/log/php8.x-fpm.log 报错内容

我可以一步一步帮你修。

0 踩