如何在 MediaWiki 上跳过 .OFT 文件扩展名的 MIME 类型检查

How to skip MIME type check for .OFT file extensions on MediaWiki

在我的私人 wiki 上,我启用了使用 $wgFileExtensions 上传 Microsoft Outlook 2016 电子邮件模板 (.oft)。但是在上传经常文件时,我遇到了错误 File extension ".oft" does not match the detected MIME type of the file (application/sla).

有没有办法解决或克服这个问题?或者也许是一种只对经常文件跳过 MIME 检查的方法?如果是这样,您能帮我提供必要的代码吗?

我还希望在单击文件 link 时 Outlook 运行。但这并不像修复错误那样重要...感谢您的帮助。

有一个快速的方法和一个更安全的方法。

最简单的选择是允许上传 MIME 类型与扩展名不匹配的内容。您可以通过在 LocalSettings.php 中添加以下内容来做到这一点(确保另一行没有冲突的语句:

$wgStrictFileExtensions = "false";

通过以下方式禁用 $wgStrictFileExtensions is a serious security risk as stated in the Mediawiki documentation, so only do this if you trust all users with upload rights. It will give users a warning about the file type, but upload the file anyway. To not have MediaWiki check at all, outright disable $wgVerifyMimeType

$wgVerifyMimeType= "false";

更合适的方法是让 MediaWiki 知道 'application/sla' 可以用于 .oft 文件。具有该扩展名的默认 MIME-type 数据库 expects 文件是 ODF 公式模板。 您可以通过向 MediaWiki 提供您自己的 MIME 类型定义文件来更改它。 在 Linux 中,您可能有 - 例如在 Debian 中,它是 /etc/mime.types。您可以添加行

application/sla                oft

并确保 LocalSettings.php 已将 $wgMimeTypeFile 设置为该文件的 link。在 Debian 示例中:

$wgMimeTypeFile = "/etc/mime.types";

进一步阅读后,我终于找到了一个non-hacky上传的解决方案.oft:

  1. 如果尚未完成,请将 .oft 个文件添加到支持的扩展列表 ($wgFileExtensions)
  2. 在 MediaWiki 1.34.2 中,编辑 /includes/libs/mime/mime.types 并将 application/sla stl 修改为 application/sla stl oft。 (据我所知,此目录已更改为 1.35+)

就是这样!在不降低和修改安全性的情况下,我现在可以上传 .oft 个文件。

希望这可以帮助其他为此苦苦挣扎的人。