
站点出现白屏、功能失效、后台报错等情况,一般是因为插件之间的冲突造成的。定位的关键不是猜测,而是把变量一点点缩小。
首先进行环境判断。切换为默认主题、清除缓存之后再次测试,如果问题消失的话就是和主题有关;如果问题仍然存在的话就针对插件进行排查。查看服务器错误日志以及程序调试日志,致命错误一般会给出具体文件和行号,可以直接定位到某个插件。
二分禁用是最快的方法。当插件数量很多的时候,逐个关闭会很慢,可以分成两半来关闭,判断出问题在哪一组里,然后再把这一组分成两半来继续查找,十几分钟就可以找到具体的插件。操作之前要备份好数据库和文件,防止停用过程中产生数据变化。
确定之后进行兼容性测试。将冲突插件升级到最新版本或者用功能类似的替代方案来代替它,保证和程序版本、脚本运行环境相一致。修复之后重新测试核心流程,包括登录、发布、表单提交以及支付回调。
交接和记录也很重要。把触发条件、所涉及的插件以及解决方法都写清楚,下次遇到类似的问题可以直接对照,不用再次进行二分。团队多人维护的网站,这份记录比临时排查要节省很多时间。
减少冲突概率的常用方法就是控制插件的数量、来源一致,在更新之前先在测试环境中进行验证。