やるきなし

2021/05/15 17:09 / MediaWiki で docx ファイルの移動(rename)

MediaWiki で docx ファイルを移動(rename)しようとすると以下のように怒られる.

The page could not be moved, for the following reason:
The new file extension does not match its type.

もとの docx は手元では MIME type: application/zip としてアップロードされており,たぶん拡張子が .zip ではないということで怒られているような気がする.MS Word のファイル(docx)が zip であると判定されるのは,docx が実は zip であるというだけ(拡張子を zip に変更すると zip で展開できる).

一旦削除して再アップロードしてしまったので,解決可能か全く不明だが,LocalSettings.php に以下を書いておくことにした.

$wgMimeDetectorCommand = "file -bi";

file コマンドは docx を application/vnd.openxmlformats-officedocument.wordprocessingml.document と判定する.ただし https://www.mediawiki.org/wiki/Manual:$wgMimeDetectorCommand に以下のようにあって,これで直るかどうかは不明.

It is important to note that MediaWiki itself performs a set of MIME detection tests itself, and only if those are unsuccessful is the MIME detector invoked.

追記 (2021/5/16)

結局上記では直らなかった.移動の際にこのチェックを行っているのは includes/MovePage.php の以下の箇所で,この箇所コメントアウトしたら無事ファイル(File:)の移動ができるようになった.

if ( !File::checkExtensionCompatibility( $file, $this->newTitle->getDBkey() ) ) {
    $status->fatal( 'imagetypemismatch' );
}

Related articles