核心排查思路:

白屏的根本原因是 PHP 代码执行时遇到了一个致命错误,导致 PHP 脚本无法继续执行,并直接终止了输出,由于错误在 display_errors 被设置为 Off 的情况下,或者错误发生得太早以至于根本没有机会输出,所以你才看不到任何错误信息。

wordpress网站白屏
(图片来源网络,侵删)

我们的目标就是找到并解决这个致命错误。


第一步:紧急恢复(让网站先能访问)

在排查具体原因之前,最重要的是先让网站恢复正常,避免影响用户体验和业务。

  1. 启用 FTP/SFTP 或文件管理器: 这是最快、最有效的方法,通过 FTP 客户端(如 FileZilla)或你的主机控制面板里的文件管理器,连接到你的网站服务器。

  2. 重命名插件文件夹:

    wordpress网站白屏
    (图片来源网络,侵删)
    • 找到你的 WordPress 安装目录下的 wp-content 文件夹。
    • wp-content 文件夹中,找到 plugins 文件夹。
    • plugins 文件夹重命名为 plugins_oldplugins_deactivated
    • 原理: WordPress 无法加载不存在的插件文件夹,因此会自动禁用所有插件,很多时候,WSOD 就是由某个有问题的插件引起的。
  3. 重命名主题文件夹:

    • 如果重命名插件文件夹后网站恢复正常,说明是插件问题,如果还是白屏,那么问题很可能出在主题上。
    • 同样在 wp-content 文件夹中,找到 themes 文件夹。
    • 将当前正在使用的主题文件夹(twentytwentythree)重命名为 twentytwentythree_old
    • 原理: WordPress 会自动回退到默认主题(如 Twenty Twenty-Four),如果网站恢复正常,说明就是你的主题有问题。
  4. 检查 wp-config.php 文件:

    • 如果以上两步都不行,问题可能出在 wp-config.php 文件,这个文件是 WordPress 的核心配置文件。
    • 通过 FTP 下载 wp-config.php 文件到你的电脑。
    • 检查文件最后几行,特别是 define('WP_DEBUG', true); 这一行,如果这行代码有语法错误(比如缺少分号、引号不匹配等),就会导致白屏。
    • 检查你最近是否在文件中添加了任何自定义代码,如果有,请先注释掉或删除。
    • 将修改后的文件重新上传到服务器,覆盖原文件。

完成这一步后,你的网站有很大概率已经恢复正常。 我们就可以针对具体原因进行排查了。


第二步:显示错误信息(找到问题根源)

网站恢复后,我们需要开启错误日志,让 WordPress 把“病因”告诉我们。

wordpress网站白屏
(图片来源网络,侵删)
  1. 启用 WP_DEBUG 模式:

    • 打开 wp-config.php 文件。
    • 找到这行:define('WP_DEBUG', false);
    • 将其修改为:
      define('WP_DEBUG', true);
      define('WP_DEBUG_LOG', true);
      define('WP_DEBUG_DISPLAY', false);
    • 解释:
      • WP_DEBUG, true: 开启调试模式。
      • WP_DEBUG_LOG, true: 将所有错误记录到一个日志文件里,而不是直接显示在页面上(避免再次白屏)。
      • WP_DEBUG_DISPLAY, false: 禁止在网页前端显示错误信息,保持网站正常访问。
  2. 查看错误日志:

    • 错误日志通常生成在 wp-content 文件夹下,文件名为 debug.log
    • 通过 FTP 下载这个文件,用记事本或代码编辑器打开。
    • 文件的最下面几行就是最新的错误信息,仔细阅读这些信息,它会告诉你哪个文件哪一行代码出了什么类型的错误

常见的错误类型和解决方法:

  • Fatal error: Allowed memory size exhausted (内存耗尽)

    • 原因: PHP 脚本尝试分配的内存超过了服务器设定的上限(通常是 64MB 或 128MB)。
    • 解决方法:
      1. wp-config.php 文件中,在 /* That's all, stop editing! Happy publishing. */ 这行之前,添加以下代码来增加内存限制:
        define('WP_MEMORY_LIMIT', '256M');
      2. 如果不行,可能需要联系你的主机服务商,提高服务器的 memory_limit 配置。
  • Fatal error: Call to undefined function... (调用未定义的函数)

    • 原因: 通常是某个插件或主题试图调用一个不存在或不兼容的 PHP 函数,常见于 PHP 版本升级后,旧代码使用了新版本已废弃或移除的函数。
    • 解决方法:
      1. 根据错误日志,定位到是哪个插件或主题。
      2. 如果是插件,去更新或删除它。
      3. 如果是主题,去更新它,或者联系主题开发者。
      4. 如果确定是 PHP 版本问题,你可能需要将 PHP 版本回退到兼容的版本,或要求插件/主题开发者进行更新。
  • Parse error: syntax error... (语法错误)

    • 原因: 在某个 PHP 文件中(如 functions.php、某个插件文件或 wp-config.php)存在语法错误,比如括号不匹配、分号缺失等。
    • 解决方法:
      1. 根据错误日志,定位到具体的文件和行号。
      2. 通过 FTP 下载该文件,检查并修正语法错误,如果你不熟悉代码,可以找专业人士帮忙。
      3. 这就是为什么在第一步要检查 wp-config.php,因为它是一个常见的“语法错误”制造者。
  • Fatal error: Uncaught Error: Class "Some_Class" not found

    • 原因: 和函数未定义类似,是某个类没有被正确加载或定义,通常也是插件或主题代码不兼容造成的。

第三步:深度排查(如果问题依然存在)

如果以上方法都不能解决问题,可以尝试以下更深入的步骤。

  1. 检查 PHP 和 MySQL 版本兼容性:

    • WordPress 对 PHP 和 MySQL 版本有最低要求,如果你最近升级了服务器环境,而 WordPress 或其插件/主题没有跟上,就可能导致白屏。
    • 解决方法: 登录你的主机控制面板,检查当前的 PHP 和 MySQL 版本,访问 WordPress 官方要求页面 确认兼容性,如果不兼容,请联系主机服务商回滚版本或升级 WordPress 核心。
  2. 检查 .htaccess 文件:

    • .htaccess 文件(位于 WordPress 根目录)是 Apache 服务器的配置文件,错误的规则可能导致网站无法访问。
    • 解决方法:
      1. 通过 FTP 备份并重命名 .htaccess 文件(.htaccess_old)。
      2. WordPress 会自动生成一个新的、正确的 .htaccess 文件,如果网站恢复正常,说明就是旧文件的问题。
  3. 恢复核心文件:

    • 有时 WordPress 核心文件可能因为某些原因损坏或丢失。
    • 解决方法:
      1. 访问 WordPress.org 官网,下载一个全新的 WordPress 安装包。
      2. 解压后,通过 FTP,用新下载包里的 wp-adminwp-includes 文件夹覆盖你网站服务器上对应的文件夹。
      3. 注意: 不要覆盖 wp-content 文件夹,否则你的主题、插件和上传的媒体文件都会丢失!

总结与预防

问题类型 常见原因 解决方案
插件冲突 新安装或更新的插件有 bug。 重命名 plugins 文件夹,逐个激活插件排查。
主题问题 主题代码错误、不兼容或损坏。 重命名当前主题文件夹,切换到默认主题。
PHP 内存不足 执行复杂任务时内存耗尽。 wp-config.php 中增加 WP_MEMORY_LIMIT
代码语法错误 wp-config.php 或主题/插件中的 PHP 代码有误。 检查语法,修正错误。
文件损坏 WordPress 核心文件丢失或损坏。 恢复核心文件
服务器配置问题 .htaccess 错误,PHP/MySQL 版本不兼容。 重命名 .htaccess,检查并调整服务器环境。
数据库错误 数据库损坏或查询错误。 联系主机服务商修复数据库。

如何预防?

  1. 定期备份: 这是最重要的!定期备份你的网站文件和数据库,一旦出问题,可以快速恢复。
  2. 更新管理: 保持 WordPress 核心、主题和插件都更新到最新稳定版,更新前可以先在测试环境(如 Staging)进行。
  3. 使用高质量的主题和插件: 从官方市场或信誉良好的开发者处购买,避免使用来源不明的、粗制滥造的产品。
  4. 使用 WordPress Staging 环境: 如果你的主机支持,可以在正式上线前,在一个克隆的网站上测试所有更改。
  5. 启用维护模式: 在进行重大更改(如主题切换、大量插件安装)前,可以安装一个“维护模式”插件,给访客一个友好的提示。

按照以上步骤,绝大多数 WordPress 白屏问题都能得到解决,祝你顺利!