温馨提示×

ubuntu php-fpm为什么白屏

小樊
43
2026-09-07 11:19:40
栏目: 编程语言

在 Ubuntu 上 PHP‑FPM 导致网站白屏(White Screen of Death, WSOD) 是很常见的问题,通常不是“PHP 挂了”,而是错误被隐藏或请求根本没到 PHP。下面按最常见原因给你一套排查思路。


一、先看是不是“错误被隐藏了”(最常见)

PHP 白屏往往是因为 有致命错误,但错误没显示

1. 临时打开错误显示

编辑你的 PHP 配置(CLI / FPM 要分开看):

# 找到 fpm 配置
php --ini
# 或
ls /etc/php/*/fpm/php.ini

修改或临时加:

display_errors = On
display_startup_errors = On
error_reporting = E_ALL

然后重启:

sudo systemctl restart php-fpm
# 或
sudo systemctl restart php8.1-fpm

刷新页面,通常就能看到真实错误了。


二、Nginx / Apache 没正确转发给 PHP‑FPM

Nginx 常见错误配置

白屏 + 日志里 FastCGI sent in stderr: "Primary script unknown"

检查:

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

常见坑:

  • root 没设置对
  • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  • socket 路径不对(php8.1 / php8.2)

测试配置:

sudo nginx -t
sudo systemctl reload nginx

三、PHP‑FPM 根本没运行

systemctl status php-fpm
# 或
systemctl status php8.1-fpm

如果没运行:

sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

看日志:

journalctl -u php8.1-fpm

四、PHP 文件有致命错误(但被吞了)

常见导致白屏的代码问题:

  • require 的文件不存在
  • 类重复定义
  • 内存耗尽
  • 插件 / 框架自动加载失败

看 PHP 错误日志:

tail -f /var/log/php8.1-fpm.log
# 或
tail -f /var/log/nginx/error.log

五、文件权限问题(Ubuntu 特别常见)

PHP‑FPM 默认用户是 www-data

ps aux | grep php-fpm

确保:

sudo chown -R www-data:www-data /var/www/your-site
sudo chmod -R 755 /var/www/your-site

六、OPcache / 扩展冲突

白屏但日志没内容?

试试:

php -m

临时禁用 OPcache:

opcache.enable=0

七、快速自检清单 ✅

# 1. PHP 是否运行
systemctl status php-fpm

# 2. Nginx 是否 502
tail -f /var/log/nginx/error.log

# 3. PHP 是否有错
tail -f /var/log/php*-fpm.log

# 4. 是否能直接执行 PHP
php /var/www/html/index.php

八、如果你愿意,我可以直接帮你定位

你可以贴出:

  1. Ubuntu 版本
  2. PHP 版本
  3. Nginx / Apache 配置
  4. 错误日志内容

我可以一步步帮你精确到哪一行配置错了

0