停用一个表单插件后前后台全白,错误日志里是调用未定义类的致命错误,把插件文件删掉才恢复访问。乍看像缓存或者权限的锅,追下去往往不是。
if (class_exists('WPCF7_ContactForm')) {
echo WPCF7_ContactForm::get_template();
}
# 日志里 grep undefined class
追下去是这么回事:另一个插件或主题直接调用被停用插件的类,没有做存在性判断,自动加载找不到就抛致命错误,整站跟着中断。
「插件停用白屏」这类改动最怕改一半,回滚脚本先准备好,再动生产。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。
同一份配置存在多处的,先确认改的是被加载的那一份。
具体做法是,从错误日志里定位抛出异常的那个调用文件;在调用前补上类存在性判断或走降级分支;以后先在测试环境停一次插件确认再发布。
验收就看一点,停用任一插件后站点仍可访问,功能按降级逻辑走。
