MediaWiki 1.25.1 中每个页面上的 ExtensionProcessor 错误

ExtensionProcessor error on every page in MediaWiki 1.25.1

我的 Wiki 上的每个页面都出现以下错误。通常,我会禁用错误显示,但由于我仍在开发网站,我不想这样做,我宁愿修复错误。

Warning: array_merge_recursive(): Argument #1 is not an array in /var/www/html/includes/registration/ExtensionProcessor.php on line 294

我是 运行 最新版本的 MW - 1.25.1 并且安装了以下扩展:

我该如何解决这个问题?我不确定从哪里开始进行故障排除。

您 运行 进入 this bug:"Setting non-array attributes in extension.json results in unhelpful error messages"

虽然错误消息没有帮助,但解决方案是在 extension.json

中找到有问题的项目

找到问题的一些相关原因。

如果您在 LocalSettings.php

中加载了 5 个以上的皮肤,阵列似乎会失败

例如,如果您指定:

wfLoadSkin( 'CologneBlue' );
wfLoadSkin( 'Modern' );
wfLoadSkin( 'MonoBook' );
wfLoadSkin( 'Vector' );
wfLoadSkin( 'Gamepress' );

那么您将不会收到错误消息,但是当您添加第 6 个或更多皮肤时,您就会看到该错误消息

wfLoadSkin( 'CologneBlue' );
wfLoadSkin( 'Modern' );
wfLoadSkin( 'MonoBook' );
wfLoadSkin( 'Vector' );
wfLoadSkin( 'Gamepress' );
wfLoadSkin( 'Bouquet' );
wfLoadSkin( 'DuskToDawn' );
wfLoadSkin( 'WPtouch' );
wfLoadSkin( 'Dusk' );

此外,某些皮肤与其他皮肤一起加载时仍会导致问题,例如

wfLoadSkin( 'WPtouch' );
wfLoadSkin( 'Dusk' );

单独加载时工作正常,但错误仍然出现,但包含在默认皮肤和 Gamepress 或 Bouquet 中。

目前,如果您想为移动设备和 PC 使用不同的皮肤,则需要混合搭配。

对我来说,错误出现在我加载 HitCounter 和 TopTenPages 之后,但我相信只要您在 Mediawiki 1.25.1 中使用 wfLoadExtension 挂钩加载 2 个或更多扩展,它就会发生。

我能够通过在 mediawiki/includes/registration/ExtensionProcessor.php 中的第 83 行 ('AutoloadClasses',) 之后添加 'manifest_version', 来修复此错误。

这是基于 change 218787