Manual:MIME type detection/ja

MediaWikiはアップロードファイルのMIME typeを検知することを試み、ファイルの拡張子がmimeタイプにマッチしないファイルを拒否します("The file is corrupt or has an incorrect extension"). 妥当なファイルのためにこのエラーを取得する場合、MIMEタイプを検知するために外部コマンドを使用することを試してみて下さい(下記を参照).

MIMEの検出
インストールされている場合、MediaWikiはFileInfoモジュールもしくはより古いMimeMagicモジュールを使用します. mime_magic could not be initialized, magic file is not availableのようなエラーを得る場合、このモジュールは正しく設定されていません - どのように修正をするのかPHPドキュメントを参照するか、外部のmimeディテクタコマンドを使用して下さい(下記を参照). FileInfoモジュールはインストールしたが、自動的に読み込まれない場合、実行時にモジュールがPECLによって読み込まれるように、$wgLoadFileinfoExtension = true;の設定を試すことが出来ます.

代わりに、mime typeを検出するために$wgMimeDetectorCommandオプションを設定することで外部コマンドを利用できます. もっとも共通の設定は$wgMimeDetectorCommand = "file -bi"です; これはファイルのタイプを決定するGNUfileユーティリティを使用します. このユーティリティはLinux上ですぐに動作します. 他のUnixによって提供されるfileユーティリティは-iオプションがサポートされないが故に動作しないことがあります. GNU fileはMac OS-Xでも利用可能です. WindowsではCygwinを通して利用可能です.

mimeモジュールがインストールされいないで、外部のmimeディテクタのコマンドが設定されていない場合、MediaWikiはmime typeを検出するためにPHPのGDモジュールに依存します. これはよく知られている画像タイプにしか動作せず(を参照)、他のファイルは追加のチェックがされることなく受け取られます!

$wgVerifyMimeType = false;を設定することでMIME typeチェックを完全に無効にすることも出来ます - しかしながらこれはとても不確かであることに注意して下さい: 任意のファイルが"有害な"ファイル拡張子でアップロードされ、クライアントのコンピュータもしくはウェブサーバで実行/解釈される可能性があります. 未解決: $wgCheckFileExtensionsに関連したこれをどのようにするのか？

MIMEタイプの検出
MediaWikiはmimeタイプをチェックして解釈する2つのファイルを使用します. (両方ともplainテキストで、行ごとに一つのエントリーを持ち、空白によって分割された一行に項目があります). ファイルの共通ではないタイプをアップロードする場合、ここに適切な情報を追加する必要があるかも知れません:

MIMEタイプをファイルの拡張子にマップするためにもしくはその逆をするためにmime.types</tt>が使用されます. mimeタイプごとに一つの行を含みます; 行の最初の項目は(規範的な - 下記を参照)MIMEタイプで、the items following that are file extensions that are allowed for this mime type (Linux/Unixシステム上で標準的なmim.infoファイルのために使用されるフォーマットと同じです). 例えば、JPEGファイルのために、次の行を適用します:

image/jpeg jpeg jpg jpe

MIME typeのファイルフォーマットの中には広範囲に検出されるものもあります - どのXMLベースのフォーマットはtext/xmlと表示され、ZIPベースのフォーマットはapplication/zipとして表示されるなどです. そのようなフォーマットのためのファイル拡張子は広範囲なMIME typeで関連づけしなければなりません 例です: text/xml xml xsl xslt rss rdf application/zip zip jar xpi sxc stc  sxd std   sxi sti   sxm stm   sxw stw

mime.info</tt>はMIME typeのためのエイリアスを解決するためおよび、media typeをそれらの割り当てるために使用されます. mime typeごとに一つの行を含みます; 行上の最初の項目は規範的なMIME type名で(内部で使用されます)、最後の項目は [XXX] フォームで構成され、mime typeのためにmedia typeを定義します. 間にあるすべての項目はMIME typeの2番目の名前です. いくつかの例です:

image/png image/x-png	[BITMAP] image/svg image/svg+xml application/svg+xml application/svg	[DRAWING] audio/mp3 audio/mpeg3 audio/mpeg	[AUDIO]

OGGファイルのために、media typeはプログラムで決定されます: vorbisのためにAUDIO、VIDEOのためにtheora、さもなければMULTIMEDIAであることに注意して下さい.

media typeはMediaWikiに特有のもので、ファイルが何のフォーマットにあるのかとは対照的にファイルに含まれるメディアの種類を決定します. この情報はmime typeに沿ってimage tableに保存されます. 現在は多く使用されていませんが、将来的にはユーザにファイルをどのように表示するのかを決定するために使用されます. 次のタイプが定義されます:

UNKNOWN    // 未知のフォーマット BITMAP     // ビットマップイメージもしくはイメージソース(psdなどのような...). 拡大することはできません. DRAWING   // ベクタードローイング(SVG、WMF、PSなど)もしくはイメージソース(oo-drawなど). 拡大できません. AUDIO      // シンプルなオーディオファイル(ogg, mp3, wav, midi、何でも) VIDEO      // シンプルなビデオファイル(ogg, mpg, など;   MULTIMEDIA  実行可能なセクションもしくはスクリプトを含むかもしれないここのフォーマットを含みません!) OFFICE     // オフィスドキュメント、スプレッドシート(apples社も場合によって含むオフィスフォーマット、スクリプトなど) TEXT       // Plain text (場合によってプログラムコードもしくはスクリプトを含む) EXECUTABLE // 実行可能なバイナリ ARCHIVE    // アーカイブファイル(zip, tar, など)

禁止されたファイル
$wgFileExtensions</tt>オプションに加えて、次の設定もファイルが拒否される原因となることがあります($wgStrictFileExtensions = false;</tt>が設定されているとしてもです):
 * $wgFileBlacklist</tt>、ファイル拡張子のリスト
 * $wgMimeTypeBlacklist</tt>、禁止されているMIMEタイプのリスト

加えて、MediaWikiはウェブサーバもしくはユーザのブラウザ上で偶然にも実行されるかもしれないスクリプトのようなすべてのファイルを拒否します. とりわけ、次のようなフォーマットはなんであれ拒否されます: HTML、 JavaScript、PHP、シェルスクリプトです. HTMLとJavaScriptの検出はより広く、誤った(false positive)レポートするかもしれません - Microsoft Internet Explorerがファイルの拡張子もしくはウェブサーバによって報告されたMIMEタイプにかかわらず、HTMLのようなファイルを解釈することが知られているからです. このことによってクロスサイトスクリプティング攻撃に対するサイトの脆弱性を導くことになります. 本当に危険なファイルさえも許可したい場合、常にfalseを返すSpecialUpload.php fileでdetectScript</tt>関数をハックします.

ウィルススキャン
''未解決. 現時点では$wgAntivirusと$wgAntivirusSetupを参照''

ダウンロードするときのMIMEタイプ
実際のファイルがユーザのブラウザに提供されるときに使用されるMIMEタイプはMediaWikiのMIME検出によって決定されないことを注意して下さい:MediaWikiを通してではなくウェブサーバによって直接提供されます. ですので、それぞれのファイル拡張子のために正しいMIMEタイプを使用するためにウェブサーバを設定しなければなりません - 例えば、あなたのブラウザでSVGファイルの閲覧をするときに問題がある場合、サーバがそれらをimage/svg+xml</tt>として配信するように設定されているか確認して下さい. (Apacheに関してはmod_mimeをご覧下さい)

関連項目

 * Manual:Configuring file uploads/ja
 * 画像のサムネイル

meta上での古い議論:
 * m:Talk:MediaWiki FAQ
 * Uploading files.