更新MediaWiki 1.35.1后主页面报LightnCandy类未找到错误,该如何排查解决
错误现象梳理
升级到MediaWiki 1.35.1后,访问主页面触发内部错误,核心报错信息翻译如下:
MediaWiki 内部错误
原始异常:[56b78ecd4218a4dfe16db365] 访问 /Main_Page 时触发错误,错误位置为/var/www/html/includes/TemplateParser.php第67行:系统找不到LightnCandy\LightnCandy类
调用链路:Vector 皮肤初始化时加载模板解析器,沿皮肤模板基类的模板准备、HTML生成流程一路触发,最终导致页面输出中断。
错误本质
LightnCandy 是 MediaWiki 1.35 及以上版本用于编译Handlebars模板的内置第三方依赖,类找不到的核心原因是升级过程中依赖加载流程断裂,没有正确引入对应类文件。
升级时最容易遗漏的环节
- 仅替换核心业务代码文件,没有同步更新Composer管理的第三方依赖目录。MediaWiki 1.35 版本开始,所有第三方PHP依赖不再散落在核心代码的子目录中,全部统一存放在站点根目录的
vendor/路径下,由Composer统一维护版本匹配关系。如果升级时只覆盖了includes/、skins/这类业务代码目录,没有拉取对应1.35.1版本的依赖包,就会直接触发类不存在的报错。 - 没有同步匹配Vector皮肤的对应版本。1.35版本的Vector皮肤完全适配新的模板解析器接口,如果升级核心后没有替换对应版本的Vector皮肤文件,旧版皮肤和新核心的接口不兼容,会在初始化阶段直接触发依赖加载失败。
- 升级后没有清理残留的旧版本缓存。包括PHP opcode缓存、MediaWiki本地编译模板缓存,如果这些残留缓存被调用,会尝试加载不存在的旧版本类定义,间接触发类未找到的错误。
分步排查操作
- 先检查站点根目录下
vendor/路径,确认是否存在lightn-candy/lightn-candy目录及对应的类文件。如果目录缺失,先确认根目录下的composer.json、composer.lock文件是1.35.1版本自带的配置文件,再在站点根目录执行命令composer install --no-dev,拉取和当前MediaWiki 1.35.1版本完全匹配的依赖包。 - 删除旧版本的
skins/Vector目录,重新解压和1.35.1版本适配的Vector皮肤文件到对应路径,避免版本错配导致的接口不兼容。 - 清理全量缓存:删除
cache/目录下除.gitkeep占位文件外的所有内容,重启PHP服务清空opcode缓存,重新访问站点验证加载状态。 - 以上操作完成后仍报错的话,逐个禁用安装的第三方扩展,排查是否存在扩展依赖版本和当前核心不匹配、引发冲突的问题。
内容的提问来源于stack exchange,提问作者Markus Heckmann
相关产品推荐
相关产品推荐

