如何修复WordPress死亡白屏(WSoD)故障问题

错误类型:
WP内部错误
错误名称:
死亡白屏
英文名称:
White Screen of Death(WSoD)
错误描述:
正如其名称一样,WordPress死亡白屏(也称为“ WSoD”)是该错误在你要访问网页时发生时,显示一个空白屏幕。

wordpress-white-screen-of-death-1-1024x512-1

您的WordPress网站是否曾突然遇到死亡白屏(WSoD),该错误会导致网站管理员和访客都无法访问您的网站。

由于缺少错误导致原因或解决方案等相关信息,WSoD也堪称无形杀手。但是,它又是最常见的WordPress错误之一。虽然死亡白屏缺少信息提示,但依据以往经验,在大多数情况下,都是可以解决的。

在本文中,我们将解释什么是WordPress死亡白屏(WSoD)及其常见原因,并且我们还将会提出九种常见的可行解决方案,以帮助您的网站尽快恢复正常运行。

什么是WordPress死亡白屏?

正如其名称一样,WordPress死亡白屏(也称为“ WSoD”)是该错误在你要访问网页时发生时,显示一个空白屏幕。

根据不同的浏览器,您可能会收到不同的错误消息。以下是Google Chrome浏览器中的示例,其中包含HTTP 500错误警告“This page isn’t working and is unable to handle the request”:

谷歌浏览器中的WordPress死亡白屏

谷歌浏览器中的WordPress死亡白屏

Mozilla Firefox浏览器的“死亡白屏”就更追求极致了,如下图:

Firefox浏览器中的WordPress死亡白屏

Firefox浏览器中的WordPress死亡白屏

如您所见,它只是一个纯白色的屏幕,不包含任何有用的错误或警告消息。

WordPress死亡白屏一般是由PHP代码错误或内存限制耗尽引起的。

又或者是,由存在问题的主题或者插件导致。如果网站前台无法访问但WordPress可进入,则可能是主题插件问题。要快速检查您WordPress网站仪表盘是否正常运行,只需导航至yourdomain.com/wp-admin。

那么,应该如何解决WSoD?

如何修复WordPress白屏死机(9种方法)

当遇到WordPress死亡白屏时,我们应该尽快修复它,让我们看一下可以用来解决该问题的九种可能的解决方案。

1.禁用WordPress插件

修复WordPress的死亡白屏(WSoD)的最简单,最常见的方法之一就是简单粗暴地禁用所有插件。通常,网站由于插件更新错误而关闭。

前提是您仍然可以访问WordPress仪表盘,进入仪表盘-插件-已安装的插件,选择所有插件,然后从批量操作下拉菜单中选择禁用:

停用所有WordPress插件

停用所有WordPress插件

如果这样可以解决问题,则需要找到最终的罪魁祸首。为此,您可以逐个启用刚才禁用的插件,每启用一个插件后重新加载网站。若在启用该插件后网站发生崩溃时,那么对应的插件则是元凶了。

如果你需要继续使用该插件,您可以更新插件到最新版本或者联系插件的开发人员寻求帮助。

如果无法访问仪表板,则可以通过FTP客户端来访问站点的文件目录。在网站根目录的wp-content文件夹下,找到plugins文件夹。将其重命名为类似于“plugins_old”的名称:

重命名插件文件夹

重命名插件文件夹

然后,再次在前端检查您的站点。如果可行,则需要跟前面一样,逐一测试每个插件。恢复插件文件夹为“plugins”,然后分别重命名每个插件文件夹,直到找到有问题的文件夹为止。

2.切换到默认的WordPress主题

如果问题不在插件,则有可能是WordPress主题导致死亡白屏。若要查看是否存在此问题,可通过切换为默认主题来替换当前主题。

如果可以访问WordPress仪表盘,进入后台,然后点击菜单外观>主题。找到并激活默认的WordPress主题,例如Twenty Twenty:

二0二0主题

二0二0主题

然后,再次测试您的站点,如果有效,则证明问题出在主题上。

如果无法访问仪表盘,则通过FTP访问站点文件夹,然后将wp-content/themes文件夹重命名为其他名称:

重命名主题文件夹

重命名主题文件夹

然后,WordPress将恢复至最新的默认主题。如果没有其他主题,则可以从WordPress主题市场下载一个主题,然后将其上传到主题文件夹。

之后,请再次检查您的站点。如果有效,则可能是您的主题发生冲突或更新不正确。在这种情况下,您可能需要与主题开发人员联系以寻求帮助或考虑切换为其他主题。

3.清除浏览器和WordPress插件缓存

如果可以访问WordPress网站后台,但仍在前台看到WSoD,则可能是由于缓存问题所致。

要解决此问题,请尝试清除Web浏览器的缓存和WordPress插件缓存(假如你安装了)。

如果WordPress网站上安装了缓存插件,例如WP Rocket 或WP Super Cache,那么大多数插件会在设置页面提供清除缓存的快速方法。

以WP Super Cache为例,进入WordPress仪表盘,通过设置>WP Super Cache>Delete Cache

WP Super Cache插件设置页面

WP Super Cache插件设置页面

4.开启调试模式

如果还是没有解决WordPress死亡白屏问题,仪表盘无法正常工作,或者您认为已找到问题,但想更深入地了解,可以启用调试模式。这将显示网站上发生的任何错误。

要启用调试,您需要打开WordPress安装目录的wp-config.php文件。找到以下行:

define( 'WP_DEBUG', false )

将“ false”更改为“ true”,然后重新加载网站。如果此行不存在,则可以将其添加到文件顶部。

取代完全的白屏,您将会看到白屏和一些错误消息。WSoD错误消息应说明问题起源于哪个文件,如下所示:

Cannot redeclare get_posts() (previously declared in 
/var/www/html/wordpress/wp-includes/post.php:1874) in 
/var/www/html/wordpress/wp-content/plugins/my-test-plugin/my-test-plugin.php on line 38

比如上述示例中,在错误信息结尾处可以看到问题出在名为my-test-plugin的插件的第38行。我们只要禁用该插件即可解决问题。

如果启用调试模式后根本看不到任何错误,则可能需要联系主机提供商。您的服务器上可能未正确配置调试。

请记住,打开调试模式会向未经批准的用户公开网站的某些信息。因此,请确保在使用完该模式后关闭。

5.增加内存限制

如果在尝试上述解决方案后WSoD空页面仍存在,或者可能是由于内存限制或内存耗尽导致出错,则需要为应用程序分配更多的内存。

这可以通过WordPress安装目录的wp-config.php文件来完成。打开文件并添加以下代码:

define('WP_MEMORY_LIMIT', '64M');

如果这行不通,再试试下面的办法。在常规环境中,您可以使用.htaccess文件来增加内存限制。只需添加以下行:

php_value memory_limit 64M

如果无法访问.htaccess文件,则可以通过编辑php.ini 文件来增加内存限制。 

为此,请通过FTP连接到服务器。在网站的根目录中,查找php.ini文件。并在该文件内的任何位置添加以下行:

memory_limit = 64M

如果仍然没有足够的内存可分配,则应用程序中可能存在问题。也许是主题或其中一个插件正在使用过多的内容资源。

在这一点上,您可能需要找个技术人员通过站点的SQL日志和其他资源统计信息查看原因,或者找主机提供商提供帮助。参考阅读《如何解决WordPress内存限制错误(2种方法)

6.检查文件权限问题

WSoD的另一个潜在原因是文件权限问题。但是,除非您真的知道自己在做什么,否则不建议轻易手动去更改WordPress的目录或者文件的权限,因为这可能会无意中创建攻击者可以利用的漏洞。

当涉及WordPress权限时,要遵循三个简单规则:

  • 文件应设置为664或644。
  • 文件夹应设置为775或755。
  • wp-config.php文件应该被设置为660,600,或644。

如果拥有服务器的SSH访问权限,则可以进入WordPress根目录,使用以下命令应用适当的规则:

sudo find . -type f -exec chmod 664 {} + 
sudo find . -type d -exec chmod 775 {} + 
sudo chmod 660 wp-config.ph

如果不确定如何执行此操作或担心失误,还是找Web主机提供商寻求帮助吧。

7.检查自动更新失败问题

有时WordPress会遇到更新问题,例如服务器超时。通常,此问题会自动解决。但是,在极少数情况下,它可能会导致WordPress死亡白屏。

这种情况下,应该做的第一件事是进入WordPress根目录,并查看是否存在.maintenance文件(该文件的名称也可以缩写)。

你需要做的事情就是尝试删除该文件,然后再次加载您的网站。

如果更新成功,但WordPress无法自动删除此文件,则一切应恢复正常。

如果更新未完成,则它可能会自动重新启动,在这种情况下,情况应该会恢复正常。

如果均失败,请尝试手动更新WordPres,也可以解决解决该问题。

关于WordPress维护模式的修复,建议查看“WordPress维护模式 – 故障排除和自定义页面教程”文章进一步了解。

8.解决语法错误或还原备份

WordPress发生WSoD死亡白屏的另一个常见原因是,执行WordPress网站代码编辑时  ,意外输入了错误的内容或使用了错误的语法。

一个字符放置在错误的位置可能会破坏整个网站,这就是为什么我们永远不要在生产环境进行网站代码编辑的原因。

不过不用担心。可以通过FTP连接到站点,并还原网站备份。作为一位WP站长,应该保持良好的网站数据备份习惯:你应该熟悉14个最佳WordPress数据库插件[WP数据库备份、优化及迁移]

在宝塔面板上,对网站执行数据备份或者恢复,都非常简单:

如果您是宝塔用户,则可以通过宝塔控制面板的计划任务,创建备份数据库或者备份网站计划任务,支持按周期定时备份,非常方便。

宝塔控制面板备份计划

宝塔控制面板备份计划

如果是恢复数据库备份,您只需要进入宝塔控制面板,进入数据库菜单,找到你需要恢复的数据库,点击“有备份”,选择需要恢复的备份版本,点击“恢复”即可。

WordPress数据库恢复

WordPress数据库恢复

如果是恢复网站备份,则可以通过访问宝塔控制面板-文件,进入/www/backup/site目录,找到网站备份压缩包,将压缩包解压到对应网站目录即可。

WordPress网站数据恢复

WordPress网站数据恢复

如果您之前在WordPress中启用了调试模式,则可能还会出现一条错误消息,提示语法错误。如果是这种情况,它应该准确地告诉你哪个文件第几行的代码出现了问题。

9.加强PHP文本处理能力

前面这些都做了,还是不凑效,WSoD尚未解决,则可以尝试另一种技巧。在极少数情况下,死亡白屏是由于页面或文章内容特别长导致。

在这种情况下,您可以尝试通过增加回溯和递归限制来调整站点上的PHP文本处理功能。为此,请将以下代码粘贴到wp-config.php文件中:

/* Trick for long posts / 
ini_set('pcre.recursion_limit',20000000); 
ini_set('pcre.backtrack_limit',10000000);

添加此代码后,保存更改。然后刷新站点以查看其是否正在运行。

小结

WordPress死亡白屏看似另站长手足无措的故障,但只要站长了解该故障的原因及解决方法,就无需过于担忧。

在大多数情况下,简单的插件和/或主题检查即可解决WSoD问题。更加熟悉WordPress调试模式,在很多时候可以帮助解决大部分的WP问题。

评论留言