WordPress 白屏死机:系统化修复方法

WordPress 白屏死机(White Screen of Death, WSoD)正如其名:浏览器中显示一个完全空白的白色页面,没有错误信息、没有管理工具栏、没有关于出了什么问题的任何线索。页面源代码也是空的。它可能只影响前台,只影响后台,或两者兼有。

技术上讲,这是 PHP 遇到了致命错误(内存耗尽、调用未定义函数、语法错误),而调试输出被禁用了。WordPress 在生产环境默认隐藏错误,所以你看到的不是有用的错误信息,只有一片白屏。

本指南按可能性从高到低依次检查每个常见原因。逐步操作 —— 在白屏消失时停下来,问题就解决了。

步骤 1:启用 WP_DEBUG

在盲目猜测之前,先让 PHP 直接告诉你哪里出错了。打开 WordPress 根目录下的 wp-config.php,在 /* That's all, stop editing! */ 这行上方添加或修改以下内容:

// 添加到 wp-config.php 中,在 "stop editing" 行上方
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);      // 写入 wp-content/debug.log
define('WP_DEBUG_DISPLAY', true);  // 在屏幕上显示错误

刷新白屏页面。你应该能看到类似这样的 PHP 错误信息,不再是空白:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)
in /var/www/html/wp-content/plugins/some-plugin/includes/class-big-query.php on line 342

这直接告诉你原因和出问题的文件。如果开启调试后白屏仍然存在,说明错误发生在 WordPress 加载之前 —— 跳到步骤 2。

Advertisement

步骤 2:检查并增加 PHP 内存限制

白屏最常见的单一原因是 PHP 内存耗尽。当某个插件加载大型数据集、主题有低效代码、或者安装了大量插件都在争抢同一块内存时就会发生。

方法 A:通过 wp-config.php 增加

// 添加到 wp-config.php,在 "stop editing" 行上方
define('WP_MEMORY_LIMIT', '256M');

方法 B:通过 php.ini 增加

找到你的 PHP 配置文件并增大 memory_limit 指令:

# 找到 php.ini 位置
php -i | grep "Loaded Configuration File"

# 编辑它
sudo nano /etc/php/8.2/cli/php.ini    # CLI
sudo nano /etc/php/8.2/fpm/php.ini     # PHP-FPM
; 在 php.ini 中
memory_limit = 256M

如果修改了 FPM 的 php.ini,需要重启 PHP-FPM:

sudo systemctl restart php8.2-fpm

方法 C:通过 .htaccess 增加

# 添加到 .htaccess(仅 Apache 有效;Nginx 忽略此指令)
php_value memory_limit 256M

验证新限制是否生效:

php -r "echo ini_get('memory_limit');"
# 应该输出: 256M

步骤 3:禁用所有插件

插件冲突是第二大常见原因。最快的测试方法是重命名插件目录,让 WordPress 找不到任何插件:

# 进入 WordPress 根目录
cd /var/www/html

# 重命名插件文件夹(这会禁用所有插件)
mv wp-content/plugins wp-content/plugins.disabled

刷新站点。如果白屏消失了,说明某个插件就是罪魁祸首。逐个重新启用:

# 改回来以重新启用
mv wp-content/plugins.disabled wp-content/plugins

# 然后逐个重命名插件文件夹来隔离问题插件:
cd wp-content/plugins
mv akismet akismet.disabled
mv contact-form-7 contact-form-7.disabled
# 持续测试直到白屏再次出现

白屏再次出现前最后恢复的那个插件就是问题所在。检查更新、换用替代插件,或联系开发者。

步骤 4:切换到默认主题

如果禁用插件没有效果,主题可能是原因。通过重命名主题文件夹或修改数据库来激活 WordPress 默认主题(如 Twenty Twenty-Five):

# 临时重命名当前主题文件夹
cd /var/www/html/wp-content/themes
mv your-theme your-theme.disabled

WordPress 会自动回退到默认主题。如果站点恢复正常,说明你的自定义主题有 PHP 错误 —— 检查其 functions.php 中的语法错误或未定义函数调用。

或者通过 wp-config.php 强制指定活动主题:

// 添加到 wp-config.php
define('WP_DEFAULT_THEME', 'twentytwentyfive');

步骤 5:检查并修复 .htaccess

损坏的 .htaccess 文件可能导致服务器级别的错误,表现为白屏。备份当前文件并替换为 WordPress 默认规则:

# 备份当前 .htaccess
cp /var/www/html/.htaccess /var/www/html/.htaccess.bak

# 替换为默认 WordPress .htaccess
cat > /var/www/html/.htaccess << 'EOF'
# Default WordPress .htaccess
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
EOF

如果你的 WordPress 安装在子目录(如 /blog/),相应修改 RewriteBase

RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

替换 .htaccess 后刷新站点,检查固定链接是否正常。你也可以从 WordPress 后台重新生成 .htaccess:进入设置 > 固定链接,不做任何修改直接点击"保存更改"。

步骤 6:检查文件权限

不正确的文件权限会导致 PHP 在读取或写入 WordPress 文件时失败。标准 WordPress 安装正确的属主和权限:

# 将属主设置为 Web 服务器用户
sudo chown -R www-data:www-data /var/www/html

# 目录权限: 755
find /var/www/html -type d -exec chmod 755 {} \;

# 文件权限: 644
find /var/www/html -type f -exec chmod 644 {} \;

# wp-config.php 应该更严格: 440 或 600
chmod 600 /var/www/html/wp-config.php

不要将目录或文件设为 777。这是安全隐患,通常也不是正确的修复方法。

快速诊断决策树

现象 最可能的原因 修复方法
前台白屏,后台正常 主题或特定页面模板错误 切换到默认主题(步骤 4)
后台白屏,前台正常 后台专用插件冲突 禁用插件(步骤 3)
前台和后台都白屏 PHP 内存不足或核心插件冲突 增加内存(步骤 2),然后禁用插件
插件或主题更新后白屏 新版本有 PHP 错误 回退更新或禁用该组件
服务器迁移后白屏 文件权限、.htaccess 或数据库连接问题 修复权限(步骤 6)并检查 wp-config 数据库配置
调试显示 "Allowed memory size exhausted" PHP 内存限制太低 增加到 256M(步骤 2)
调试显示 "Call to undefined function" 插件加载顺序错误或缺少依赖 禁用错误信息中提到的插件
进阶提示:修复白屏后,不要在生产环境保持 WP_DEBUGWP_DEBUG_DISPLAYtrue。将 WP_DEBUG_DISPLAY 设为 false,保持 WP_DEBUG_LOGtrue,这样错误会被记录到 wp-content/debug.log 而不会显示给访客。

相关指南