在 Ubuntu 上 PHP‑FPM 导致网站白屏(White Screen of Death, WSOD) 是很常见的问题,通常不是“PHP 挂了”,而是错误被隐藏或请求根本没到 PHP。下面按最常见原因给你一套排查思路。
PHP 白屏往往是因为 有致命错误,但错误没显示。
编辑你的 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
刷新页面,通常就能看到真实错误了。
白屏 + 日志里 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;测试配置:
sudo nginx -t
sudo systemctl reload nginx
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
常见导致白屏的代码问题:
require 的文件不存在看 PHP 错误日志:
tail -f /var/log/php8.1-fpm.log
# 或
tail -f /var/log/nginx/error.log
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
白屏但日志没内容?
试试:
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
你可以贴出:
我可以一步步帮你精确到哪一行配置错了。