api - MediaWiki:获取“readapidenied”错误而不是登录令牌
问题描述
这是一个相当令人费解的问题。我有多个 MediaWiki 安装。在这种特定情况下:版本 1.34。
现在我可以登录所有这些 MediaWiki。一切正常。
现在我可以通过 API 访问所有这些 MediaWiki——除了一个。奇怪的是:它们的配置几乎相同。我什至将配置从一个一切正常的wiki复制到第二个wiki。
更准确地说。如果我发送...
/wikiA/api.php?action=query&meta=tokens&format=json&type=login
...我得到了一个非常合理的答案,例如:
{"batchcomplete":"","query":{"tokens":{"logintoken":"37ec2e690eeb48a10ac66b2ccbca2b576000f9f4+\\"}}}
如果我发送...
/wikiB/api.php?action=query&meta=tokens&format=json&type=login
...我得到以下答案,例如:
{"error":{"code":"readapidenied","info":"You need read permission to use this module.","*":"See http://xxx.xxx.xxx.xxx/wikiB/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes."}}
这可以使用任何网络浏览器进行复制。
wikiB
问:我什至无法访问正常的登录模块,这可能是什么原因?不可能是配置。它几乎完全相同。不可能是源代码。我对 PHP 文件进行了比较,发现没有显着差异。这里有什么问题?似乎它必须与数据库有关。但是我该如何处理呢?有人有想法吗?如果您能提供帮助,我将不胜感激!
解决方案
我分析了数据库:没有区别。我用谷歌做了更多的研究:发现了一个错误报告。
这是 MediaWiki 中的一个错误。他们提供了一个带有这种错误的官方软件版本。
原来有1.34.0版本和1.34.1版本。我的 WikiA 有 1.34.1,而 WikiB 有 1.34.0。将这个单个文件includes/api/ApiQuery.php
从 WikiA 复制到 WikiB 后,一切正常。
推荐阅读
- reactjs - Boost带网格系统
- csr - Galaxy Watch Designer:尝试生成分发证书以在手表上测试时生成 CSR 失败错误
- javascript - 如何在左侧创建导航栏,在右侧创建容器?
- c# - wpf 中禁用的列表框项目未显示工具提示
- javascript - openVidu - 由于网络问题导致 websocket 连接丢失时,connectionDestroyed / sessionDisconnected 事件不会触发
- python - 构建 TensorFlow 模型时出错:FailedPreconditionError
- reactjs - 过滤 && 排序 ag-grid 后如何获取数据?
- arrays - 将 AnsiChar 数组转换为字符串:Delphi 10.3
- bash - 如何在 bash 中的复合命令之前放置重定向?
- spring-boot - CorsConfiguration.setMaxAge 在 SpringBoot 应用程序中不起作用