本文约 2,937 字,预计阅读 8 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:装完插件站点就崩了
最让人崩溃的场景:
- 启用一个新插件,刷新页面 → 白屏;
- 更新了主题,后台打不开;
- 改了段代码,整站 500;
- 现在后台进不去,没法停用插件。
新手的第一反应是 FTP 上去改目录名。但 WordPress 早就内置了自救机制,而且更优雅——不需要 FTP,不需要改文件。
原理分析:两套机制
WordPress 有两套互相独立的排障机制,很多人分不清。
机制一:恢复模式(Recovery Mode,WordPress 5.2+ 内置)
触发条件:PHP 致命错误发生在插件或主题代码里。
行为:
- WordPress 捕获致命错误;
- 不显示白屏,而是显示”站点遇到技术困难”页面;
- 同时给管理员邮箱发一封邮件,标题”您的站点 [xxx] 遇到了技术性问题”;
- 邮件里有一个特殊链接,点进去进入恢复模式;
- 出错的插件被临时禁用(只对当前会话生效),后台可正常访问;
- 你可以进去卸载/修复问题插件。
关键点:
- 只对管理员生效,普通访客仍看到错误页;
- 链接有效期约 1 天;
- 只在错误来自插件/主题时触发,服务器配置或核心文件问题不会触发。
机制二:故障排除模式(Health Check 插件)
触发条件:手动开启。
行为:
- 装 Health Check & Troubleshooting(WordPress 官方开发);
- 「工具 – 站点健康 – 故障排除」点”启用故障排除模式”;
- 插件仅对当前登录用户禁用所有插件、切换到默认主题;
- 站点对其他人完全正常,只有你在”裸环境”里测试;
- 逐个启用插件复现问题,定位元凶;
- 退出后一切恢复。
关键优势:不影响真实访客。这比”FTP 改目录名”高明得多。
保姆级实操
场景 A:站点已崩溃,进不去后台
第一步:查管理员邮箱
邮件标题形如”您的站点遇到了技术性问题”。没收到就检查垃圾箱,以及 WordPress 能否发信(参考WordPress SMTP 邮件配置)。
第二步:点击链接进入恢复模式
https://mimangfei.com/wp-login.php?action=enter_recovery_mode&rm_token=xxxxx
登录后顶部提示条会说明哪个插件被暂停。
第三步:处理问题插件
能确定就卸载或更新;不确定就先全停,再逐个启用测试。
第四步:退出恢复模式
点提示条的”退出”,或清除浏览器 cookie。
命令行替代(有 SSH):
wp plugin deactivate --all --allow-root
wp plugin deactivate 插件slug --allow-root
wp theme activate twentytwentyfour --allow-root
场景 B:能进后台但某功能异常
这是故障排除模式的主场。
第一步:安装 Health Check & Troubleshooting(作者 The WordPress.org Team)。
第二步:「工具 – 站点健康」→「故障排除」→「启用故障排除模式」。
第三步:确认进入。顶部出现提示条:
故障排除模式已启用
[禁用所有插件] [启用所有插件] [切换到默认主题] [禁用故障排除模式]
第四步:二分法定位
先确认”裸环境”下问题是否消失:
- 消失了 → 是插件或主题问题,继续;
- 没消失 → 不是插件问题,可能是服务器配置、数据库或你的自定义代码,转其他方向。
第五步:逐个启用
一次启用一个插件后复现问题;插件多时用二分法(一次启用一半),效率从 O(n) 降到 O(log n)。
第六步:切换主题测试
插件全部启用后问题不在,就切主题验证。
第七步:退出
点「禁用故障排除模式」恢复。
场景 C:Health Check 的其他功能
「状态」页:列出检查结果,分”严重”和”推荐”。常见问题:PHP 版本过旧、缺少扩展(imagick、zip)、计划任务未运行、REST API 不可用、数据库连接慢。每项都有修复建议。
「信息」页:完整环境信息(服务器、PHP、MySQL、插件列表、主题、媒体处理、邮件等),一键复制用于求助。
场景 D:无 SSH、无邮箱的极端情况
- 通过数据库停用插件(phpMyAdmin):
sql
SELECT option_value FROM wp_options WHERE option_name = 'active_plugins';
UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';
直接设成空字符串是安全的(表示没有启用任何插件),不要手工改序列化字符串。
- FTP 重命名插件目录:
bash
mv wp-content/plugins/问题插件 wp-content/plugins/问题插件_disabled
- 改主题:
sql
UPDATE wp_options SET option_value='twentytwentyfour' WHERE option_name='template';
UPDATE wp_options SET option_value='twentytwentyfour' WHERE option_name='stylesheet';
常见踩坑
- 收不到恢复模式邮件:最常见的障碍。WordPress 默认用 PHP
mail(),很多服务器发不出去。装个 SMTP 插件配好,长期受益。 - 链接过期:约 1 天,过期要重新触发错误才能拿到新链接。
- 案例:某站白屏,站长收到恢复模式邮件但没在意,直接 FTP 改了插件目录名。结果 WordPress 报”插件文件不存在”,后台插件页面直接空白。正确做法是用恢复模式进去正常卸载,而不是改目录名。
- 故障排除模式下问题消失,退出又出现:说明确实是插件/主题问题,但你没验证完。耐心走完二分法。
- 忘了退出:只影响你自己(cookie 绑定),但换浏览器访问会发现”明明正常”。检查顶部提示条。
- 缓存导致误判:开着页面缓存时看到的是缓存的旧页面。排查期间先关缓存或加
?nocache。 wp-content/object-cache.php干扰:排查时必要时临时移走 Redis drop-in。
总结
WordPress 排障有两条内置路径:恢复模式(站点已崩溃,靠邮件链接进入,临时禁用出错插件)和 Health Check 的故障排除模式(能进后台,只对你一人模拟裸环境,逐个启用定位冲突)。强烈建议每个站点都装 Health Check——官方开发、免费、轻量,还能给出完整环境信息用于求助。另外务必配好 SMTP 让 WordPress 能发邮件,否则恢复模式这条救命通道等于不存在。日常预防方面,重大改动先在WordPress Staging 测试环境验证,配合WordPress 月度安全巡检清单,能把这类事故概率降到很低。
