打开网站,首页不见了,只剩一句话:“此网站遇到了致命错误。”有时 wp-admin 也显示这句话,让您连后台都登录不了。
看起来很吓人,但这其实是 WordPress 最容易解决的问题之一。它表示 PHP 遇到了致命错误并停止运行,而罪魁祸首几乎总是某个插件、您的主题、PHP 版本变更或内存限制。您的内容仍安全地保存在数据库中。下面教您如何找到原因,让网站重新上线。
要点速览
- 出现致命错误提示,说明 PHP 遇到了致命错误,问题几乎总是出在某个插件、主题上,或发生在 PHP 变更之后。
- 先查看网站管理员邮箱:WordPress 会发送一封包含恢复模式链接的邮件,并指出出错的插件或主题。
- 如果没收到邮件,请开启 WP_DEBUG_LOG,然后在 wp-content/debug.log 中查找出错的文件。
- 无需进入 wp-admin,只要重命名插件文件夹即可禁用该插件,也可以用 WP-CLI 一次性禁用全部插件。
- 如果无法很快找到原因,就先恢复出错之前的最近一次备份,再在预发布环境中从容排查。
首先:最近改了什么? 回想一下出错前最后做了什么:更新了插件或主题、安装了新插件、更换了 PHP 版本,还是改了代码?那通常就是原因所在,也告诉您应该先从哪里查起。
第 1 步:查看恢复模式邮件
WordPress 遇到致命错误时,会向网站管理员邮箱发送一封主题为“您的站点遇到了技术问题”(Your Site is Experiencing a Technical Issue)的邮件。邮件中会指出出错的插件或主题,并附带一个专用的恢复模式链接。
打开链接并登录。WordPress 只会为您暂停出错的插件或主题,让您可以进入 wp-admin,对其进行更新、替换或停用。如果没看到邮件,请检查垃圾邮件文件夹。该链接会在一段时间后失效,但如果错误再次发生,WordPress 会重新发送。
第 2 步:查看错误信息
没收到邮件?那就让 WordPress 把错误写入日志。在 cPanel 中打开文件管理器,编辑网站目录下的 wp-config.php,在 /* That's all, stop editing! */ 上方添加以下几行:
// Log errors to wp-content/debug.log without showing them to visitors
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );刷新出错的页面,然后打开 wp-content/debug.log。找到最后一条以 PHP Fatal error 开头的记录。它的末尾是一个文件路径,从路径就能看出问题出在哪里:
wp-content/plugins/plugin-name/...:就是这个插件;wp-content/themes/theme-name/...:是您的主题;- Allowed memory size ... exhausted:内存限制问题(见第 5 步)。
排查完成后请删除这三行,以免日志不断变大。在 WebGee 上,您也可以查看 PHP 错误日志,我们的文档介绍了日志的位置。
第 3 步:禁用出错的插件
这一步不需要 wp-admin。在文件管理器中进入 wp-content/plugins/,重命名该插件的文件夹,例如把 slider-pro 改为 slider-pro.off。WordPress 找不到它,就会自动停用。然后刷新网站。
如果不知道是哪个插件,就把整个 plugins 文件夹重命名为 plugins.off。如果网站恢复正常,再把名字改回来,然后逐个重命名插件,直到错误再次出现。如果能用 SSH,WP-CLI 会更快:
# List plugins without loading them (works even when the site is down)
wp plugin list --skip-plugins --skip-themes
# Deactivate one plugin
wp plugin deactivate slider-pro --skip-plugins --skip-themes
# Or deactivate all of them, then reactivate one by one
wp plugin deactivate --all --skip-plugins --skip-themes第 4 步:如果是主题的问题
在 wp-content/themes/ 中重命名当前启用主题的文件夹。如果安装了默认主题,WordPress 会自动切换过去,网站就能加载,外观虽然不同,但可以正常运行。接着更新主题或恢复可用的版本,再切换回来。正因如此,请至少保留一个默认主题。
第 5 步:其他常见原因
PHP 版本变更
如果错误是在升级 PHP 后立即出现的,请先切回原版本:在 cPanel 中使用Select PHP Version;在 WordPress Cloud 中进入高级 › 开发者工具。然后更新日志中指出的插件或主题,再在预发布环境中重新尝试新版 PHP。
内存不足
如果看到“Allowed memory size exhausted”,可以在 wp-config.php 中添加 define( 'WP_MEMORY_LIMIT', '256M' ); 来提高 WordPress 的内存上限,并在Select PHP Version › Options中检查 PHP 的 memory_limit。不过,如果某个插件在每个页面都要占用大量内存,真正该解决的是这个插件。
更新中断
如果更新进行到一半就停止了,您可能会看到维护提示或缺失文件。如果网站目录中有 .maintenance 文件,请将其删除,然后重新安装该插件或 WordPress 核心文件(wp core download --force --skip-content)。
第 6 步:拿不准时,直接恢复
如果网站关系到您的收入,而您又无法在几分钟内找到原因,请先恢复出错之前的最近一次备份,之后再慢慢排查。在 WebGee cPanel 主机上,打开 JetBackup,选择问题出现之前的还原点并恢复文件;只有当改动涉及数据库时才一并恢复数据库,以免丢失近期的订单或评论。在 WordPress Cloud 上,可以从备份中将网站恢复到某个时间点。
然后在预发布副本中复现问题,在那里修复,确认无误后再推送到正式环境。
致命错误排查清单
- 记下出错前刚刚做了哪些改动
- 查找“您的站点遇到了技术问题”邮件及其中的恢复链接
- 开启 WP_DEBUG_LOG,查看 wp-content/debug.log 中最后一条致命错误
- 重命名日志所指向的插件或主题文件夹
- 如果错误发生在 PHP 变更之后,将 PHP 切回原版本
- 仅在日志提示内存耗尽时才提高内存上限
- 如果网站需要立即恢复,就从备份还原
- 重新关闭调试,并在预发布环境中测试修复效果
不想独自处理?
致命错误似乎总在最糟糕的时候出现。在 WebGee,我们的工程师 7×24 小时在线聊天,可以和您一起查看日志,帮您尽快恢复网站;JetBackup 恢复和预发布副本也随时待命,在关键时刻为您保驾护航。
常见问题
“此网站遇到了致命错误”是什么原因造成的?
是 PHP 致命错误。常见原因包括:插件或主题更新、插件不支持当前的 PHP 版本、PHP 内存耗尽,或者更新文件损坏、更新不完整。
我没收到恢复模式邮件,它去哪儿了?
邮件会发送到“设置 › 常规”中填写的管理员邮箱地址。请检查垃圾邮件文件夹,并确认这个地址是否仍在使用。如果网站发信不稳定,建议配置 SMTP,这样下次就能顺利收到。
修复过程中会丢失内容吗?
不会。开启调试、重命名插件文件夹和切换主题都不会影响您的文章、页面或订单,这些都保存在数据库中。但恢复旧备份可能会导致数据丢失,所以如果不确定,请只恢复文件,或先导出近期订单。
进不了 wp-admin 也能修复吗?
可以。本指南中的所有操作都可以通过 cPanel 的文件管理器或 SSH 完成,当 wp-admin 本身也显示这个错误时,正好派上用场。
更换 PHP 版本后出现了这个错误,该怎么办?
先切回之前的版本:在 cPanel 中使用“Select PHP Version”,在 WordPress Cloud 中进入“高级 › 开发者工具”。然后更新出错的插件或主题,再在预发布环境中重新尝试新版本。
