Manual:Configuring file uploads/ja

MediaWikiはメディアファイルのアップロードと統合をサポートします. このページではこの機能の技術的な面を説明します. 一般的な使い方の情報については および  を参照してください.

アップロード機能は MediaWiki バージョン 1.1 から実装されていますが、セキュリティを考慮し既定では無効になっています. アップロードはコンフィギュレーション設定によって有効にすることが出来ますが、いくつかの前提条件を確認しておくことをお勧めします.

アップロードがPHPで有効になっていることを確認する
以下の項目は で設定する必要があります:

設定されていない場合、PHPスクリプトはアップロード機能を使用できないのでMediaWikiのアップロード機能も有効になりません.

「open_basedir」が設定されている場合、MediaWiki インストレーションのディレクトリ（{$IP}/images）と「upload_tmp_dir」フォルダ（設定していない場合は既定のシステムフォルダ）の両方を対象に指定する必要があります. 「upload_tmp_dir」を追加すると「Could not find file "/var/tmp/php31aWnF"」（「upload_tmp_dir」が「/var/tmp」である場合）のようなメッセージを避けることができます. より詳しくはPHPのファイルアップロードについての文書ファイルアップロードの基本そして特にを参照してください.

Windows と IIS 利用者対策
の設定により Internet Guest Account ( _MachineName または IIS 7 以降は ): を読み取り・書き込み・実行可能に設定.

ディレクトリのセキュリティを調査する
アップロードディレクトリの設定では、エンドユーザーによるwikiもしくはウェブサイトに損害を与える可能性のある外部スクリプトを実行不能にして (参照)、アップロードとウェブディレクトリへの不正なアクセスを予防する必要があります.

フォルダ (または以前のバージョンでは フォルダ ) に「755」許可を設定.


 * ユーザーは読み取り、書き込み、実行ができるようにします.
 * グループは読み取り、実行ができるようにします.
 * ワールドは読み取り、実行ができるようにします.

safe_mode を使用している場合は、php スクリプトの実行に使用されているユーザー (つまり、apacheユーザー) がそのディレクトリを所有していることを確認してください.

CentOS 6 または Mageia を使用している場合、chown コマンドの owner:group は "www-data:www-data" ではなく "apache:apache" である必要があります.

を使用する場合は、それに応じて ACL を調整するようにしてください（そちらを参照してください）.


 * イメージフォルダのディレクトリリストを制限する

パブリックユーザにイメージフォルダのリストを表示させたくない場合は、これをApache設定で設定することもできます:

.htaccess ファイルの確認
MediaWikiのインストールフォルダにある ディレクトリには、いくつかの設定がある.htaccessファイルが含まれています. このファイルの目的は、アップロードフォルダをより安全にすることです. アップロードディレクトリを別の場所に置く場合は、.htaccessファイルを新しい場所にコピーするか、サーバー上でその設定を直接適用することをお勧めします. ただし、これらの構成の中には、サーバーの構成によっては競合やエラーの原因となるものがあります.

いくつか注意点があります.


 * サーバーが.htaccessファイルのディレクティブを設定または上書きできない場合、そのフォルダーの下のファイルにアクセスすると、一般的な「HTTP 500エラー」が発生する可能性があります. その場合は、行をコメントアウトし、それらのディレクティブをサーバー構成ファイルに直接適用する必要があります.  問題の原因となる可能性の高いディレクティブは、HTMLとPHPファイルがHTMLとして扱われるのを防ぐ   とPHPファイルがサーバー上で解析されて実行されないようにする です.

アップロードをon/offに設定する
MediaWiki バージョン 1.5以降は、設定する属性は  に存在し、その の内容は以下の通りです:

アップロード機能を無効にするためにはこの属性をfalseに設定します:

集中リポジトリを使う
InstantCommonsは設定変更が可能な機能で、ウィキメディアコモンズの何百万という無料の（自由にライセンスされた）ファイルにすぐにアクセスできます.

アップロードの権限
既定では、登録されているすべての利用者がファイルをアップロードできます. これを制限するには を変更してください:


 * 一般利用者にはファイル アップロードを許可しない:


 * 「uploadaccess」という名前の特殊グループを作成し、所属するメンバーにファイル アップロードを許可する:


 * 自動承認された利用者 (新規ではない利用者) にファイル アップロードを許可する:

既存ファイルを置き換える権限は、 と呼ばれる追加の許可で制御されています.


 * 一般利用者に既存ファイルの上書きを許可しない:


 * 自動承認された利用者 (新規ではない利用者) にファイル更新を許可する:

ForeignFileRepoが設定されている場合、ローカルにあるファイルを置き換える権限は  と呼ばれる特別な権限で制御されています.


 * ローカルにあるファイル リポジトリのファイルの上書きを一般利用者に許可しない:


 * 自動承認された利用者 (新規ではない利用者) に対しローカルのファイル リポジトリにあるファイルの置換を許可する:

ユーザ権限について詳しくはManual:User rightsを、アクセス制限について詳しくはManual:Preventing accessをご覧ください.

ファイルタイプの設定
に を追加することにより、その他のご希望の種類のファイルをアップロードできるようになります. 例えば、$wgFileExtensions の行を以下のように変更することができます.

もしくは

もしくは

ブラックリストに掲載されているファイルタイプの制限があります. ブラックリストの拡張子を持つファイルをアップロードするには、ブラックリストを変更する必要があります. たとえば、利用者が実行可能ファイルをアップロードできるようにするには:

加えて、はMIME type に基づいて特定のファイルタイプを防止します; 例えば .zip ファイルは MIME type (MediaWiki version 1.14 から 1.17 まで) に基づいて禁じられます.

を設定することもできます

ほとんどの種類のファイルをアップロードできるようにします. ただし、ブラックリストに載っているファイルタイプとMIMEタイプは引き続き許可されません.

「ファイルが壊れているか、拡張子が間違っています」というエラーが表示された場合は、mime type detectionが正しく動作していることを確認してください.

どんな種類のファイルでも許可することにした場合、MIME検出が機能していることを確認し、について考えてみてください.

拡張子zipを有効にするには、LocalSettings.phpファイルに次の記述が必要です (MediaWiki v1.19.23 でテスト済み).

ログイン
標準では、anonymousによるアップロードは許可されていません. ツールボックスに「ファイルのアップロード」リンクが表示される前に、登録とログインが必要です.

サムネイル
自動的な画像処理/サムネイル化の情報は、 (画像サムネイル) を参照してください. サムネイルに関する問題については、画像のサムネイルが機能しない、または表示されないを参照してください.

ファイルが画像やビデオのように視覚的でない場合、代わりにファイルアイコンが使用されます. FileRepoグループのFileクラスの 関数で生成されます. " "に格納されているアイコンを " "フォーマットで表示します.

ファイルのアップロードのための最大サイズを設定する
ブラウザは、実際にファイルを送信する前に、アップロードするファイルのサイズをサーバーに知らせます.

アップロードのサイズが大きすぎる場合、ターゲット（サーバー）に拒否され、どの層で制限がかかったかによって複数のエラーを出してアップロードが失敗します.


 * サーバー（nginx, Apache）が送信データの最大量を制限している場合、単純にHTTP 500エラーまたはHTTP 413 - Request entity too largeで失敗する可能性があります.
 * PHPレベルでの制限の場合、post_max_sizeがヒットした場合、一般的なHTTP 500エラー（もしくは単に空白ページ）を得るかもしれません、そうでなければ、MediaWikiはより意味のあるエラーメッセージを与えるはずです.



既定では、の設定は、アップロードされるファイルのサイズを2メガバイト（およびポスト操作の最大サイズは8メガバイト）に制限します. さらに大きなファイルをアップロードできるようにしたい場合、php.ini 内でこれらのパラメーターを編集してください:


 * , デフォルトでは8メガバイトの大きさです.
 * , デフォルトでは2メガバイトの大きさです.

これはサーバにアクセスするroot権限が必要です - 共有サーバ上にある場合、サーバの管理者に連絡をして下さい.

php.ini ファイルの保存先はご利用の配布により異なります. サーバーで使用されているphp.iniを探す方法はを参照してください.
 * php.iniファイルの場所を確認する:

If you have more than one website hosted on a server and want to change only for MediaWiki, insert into your /etc/apache2/sites-enabled/your_wiki_site.com inside &lt;Virtual Host&gt;:
 * 1つのサーバーで複数のウェブサイトをホストする:

上記の設定は、mod_phpを使用しているサイトであれば、.htaccess ファイルでも有効です. もしPHP 5.3 以降をご利用で利用可能に設定するには、php.ini ディレクティブを .user.ini ファイル内に配置します.


 * Webサーバの制限:

ご利用のWebサーバによっては、アップロードできるファイルのサイズにさらに制限条件が付加されます. Apache では LimitRequestBody もそのような設定の一つです. Nginx 向けはclient_max_body_size が該当の設定です Lighttpd では場合により server.max-request-size の調整が必要.

Ubuntu 16.04:

(たとえば Linux の sudo /etc/init.d/php5-fpm リスタート. )


 * 画像ファイルが重すぎるときの警告:

MediaWiki は オプションよりも大きなファイルをアップロードしようとすると警告を発します. これはPHPによる制限とは独立しています.


 * 一時的なアップロード制限:

アップロード制限を一時的に変更するには (特定のファームウェアで複数のウィキを走らせる場合など)、次の行を追加します.

追加はウィキ単位で、場所は MediaWiki LocalSettings.php 設定ファイルです. このサンプルの PHP 上限は 50 Mb. これらの設定は、上で設定した最大値を上書きしないことに注意しましょう (コア php.ini および apache2 php.ini ファイルは絶対的な最大値を設定するからです). このメソッドは、絶対最大値よりも小さい最大値を設定する.


 * IIS7 アップロード上限

  

上記のmaxAllowedContentLengthでは、ユーザーは50,000,000バイト（50MB）の大きさのファイルをアップロードすることができます. この設定は、IISのサービスを再起動することなく、すぐに動作します. web.config ファイルは、Web サイトのルートディレクトリにあります.

アップロードできるファイルの上限を2ギガにする:

以下を LocalSettings.php に追加:

で以下の行を調整.

IIS web.config file で maxRequestLength 設定値を上書きします. 例えば、web.configの以下の項目は、2GB以下のファイルをアップロードすることを許可しています.

IIS 7では、大容量のアップロードを許可する設定も必要です. これは、ウィンドウ中央のIISセクションにある「要求フィルタリング > 機能設定の編集」をクリックすることで確認できます. Set the ”Maximum allowed content length (Bytes)” field to 2147482624. If you don’t see "Request Filtering" in the IIS section, it needs enabled via Internet Information Services > World Wide Web Services > Security in the "Turn Windows features on or off" area in Control Panel.

上記の方法で大容量アップロードができない場合は、コマンドプロンプトを開いて、以下のコマンドも実行してください.

Java JAR のアップロードの許可
MediaWiki は既定ですべての ZIP 形式に見えるファイルをスキャンし、Java .class を検出するとファイルを拒否します. セキュリティ上、悪意のある Java applet のアップロードの予防策として実施されています. 非公開サイト限定で、以下を使いこの検知を無効にします.

これを利用し、制限を迂回して mimetypes を無差別にアップロードさせることができます. たとえば Word 2007 で作成した .doc ファイルをアップロードしたい場合、テキスト リストを添付しても、また mimetype 検知の許可と拒否に無関係に、以下のメッセージが表示される場合があります.


 * このファイルは破損しているか、さもなければ読めないZIPファイルです. セキュリティチェックを適切に行うことができません.

Word 2007 で保存した拡張子.doc のファイル (おそらくそれ以降のバージョンでも) には小さな ZIP 形式の圧縮が含まれ、2007以前のワードと異なりバイナリの .doc 形式で表現可能できない metadata が書き込まれています. この埋め込み ZIP データが引っかかり、Java archive 検査器は .doc ファイルを拒否します. それより新しい .docx 形式のファイルは ZIP 圧縮に問題がまったくないため、アップロードは正常に行われ の設定は不要です.

URLより直接アップロード("Sideloading")
コンピューター内のファイルの代わりに URL を指定する直接アップロードを利用者に対し許可する場合、 を設定してください.

既定では URL からの直接アップロードは API (または などの拡張機能) の使用が条件です. 「特別:アップロード」でこのオプションを有効にするには、 を true に変えることも忘れないでください. するとアップロード用フォームのファイル名記入欄の下に、URL記入欄が追加されます. このURL欄は既定では記入できなうようにグレー表示ですが、欄の横のボタン (チェックボックス) で有効と無効を切り替えます.

ただしこの機能の利用は、利用者権限 のある場合に限定されます. システム管理者は、MediaWiki 1.20 以前とは異なり、既定ではなく個別に権限を申請することになりました. 通常のユーザ向けに許可する方法. ウェブ上の任意の場所から直接アップロードできるようにすると、ランダムで不要なものをアップロードしやすくなり、人々がウェブ上で遭遇する可能性のあるものなら何でもアップロードしてよいというように誤解される可能性があることを心に留めておいてください.

まとめてアップロード
複数のファイルをアップロードするには、個別ではなくまとめて処理するツールがいくつかあります.

アップロード ディレクトリ
画像を1件アップロードすると、いくつか生成されるものがあります.


 * 1) ファイル名前空間の記事. 記事のタイトルにはファイル名、たとえば File:MyPicture.png を使用.  このページが保存されると、通常のページ同様に編集できます.
 * 2) ファイル自体はファイルシステムの で設定されたフォルダもしくはそのサブフォルダに保存されます (以下を参照してください. )
 * 3) サムネイル化が用意できる場合は、ファイルのサムネイル版画像を作成して提供します (ファイル説明ページで使用する場合など.  それぞれのサムネイルはメインの画像ファイル名にしたがって、個別のフォルダに入れてサムネイルディレクトリに保存します.

If is enabled (by default), MediaWiki creates several subdirectories in the images directory.

If  is set to , uploaded files will be distributed into sub-directories of $wgUploadDirectory based on the first two characters of the md5 hash of the filename. (e.g. $IP/images/a/ab/foo.jpg) このようなサブディレクトリの作成は、自動的に行われます. ファイルシステムによっては、1つのフォルダに大量のファイルがあるとうまく動作しないことがあるため、これを利用して1つのフォルダに大量のファイルが存在しないようにします.

もし、アップロードされる画像が少なく、小さなWikiしか管理していないのであれば、 を設定することでこれをオフにし、すべての画像は$wgUploadDirectory自体にアップロードされるようにすることができます. (例: $IP/images/foo.jpg)

Multiwiki サイト

 * LocalSettings.phpのサイトの場所を、例えば/var/lib/mediawikiからあなたのインストールした場所に変更し、書き込み可能な画像ディレクトリを作成したことを確認してください（残りのほとんどはシンボリックリンクで可能です）.

そうしないと、画像のアップロードが不思議とうまくいきません.

アップロード用フォームの設定
インストールに含まれる既定のアップロード用フォームはメッセージを (「ファイルをアップロード」リンクやSpecial:Uploadリンクを押した時に) 表示しますが、必ずしもご利用のウィキに適しているとは限りません.

その場合にはMediaWiki:Uploadtextの内容を編集し、メッセージを書き換えます. ご利用のウィキが多言語版の場合は、MediaWiki:Uploadtext/deなどを編集して地域化するのをお忘れなく.

MediaWiki:Licenses ページにあるドロップダウンメニューで、 ご利用のウィキのアップロードのライセンスを個別化します. この機能のドキュメントを参照してください.

ただしMediaWiki:Licenses/deなど地域化したバージョンは既定では表示されません. 有効にするには、変数を設定します.

アップロードフォームの「要約欄」に表示する既定のメッセージは、MediaWiki:Upload-default-descriptionを編集して追加します（例えばご利用のウィキサイトでアップロード要約欄に既定のテンプレートを設定して全員に使用させたい場合など. ）

Windowsにおける既知の問題
Windows サーバ上で MediaWiki を走らせると 、PHP バグが原因でファイル名にいくつか制限があります. PHP は非ASCII文字を使ったファイル名を正しく処理できないため（訳注：後出）、MediaWiki ではアップロード失敗の予防策としてファイル名にそれら文字を使ったファイルに対し、 を表示して受付を拒否する ことがあります.

MediaWiki 1.31 以降で PHP 7.1 以降を使う場合、MediaWiki で非ASCII文字が処理できるようになりました.

英字・数字以外の文字を使用したデータベースにおける既知の問題
もし に 英字・数字以外の文字が含まれている場合、以下のようなエラーが発生する場合があります: Could not create directory "mwstore://local-backend/local-public/&lt;path&gt;". . ファイルバックエンドの有効なコンテナ名を内部チェックが原因ですが、構成に $wgDBname を使用しています.

MediaWiki 1.26より、 $wgDBname にドットが含まれている場合でのアップロードが可能となりました.

関連項目

 * セキュリティ部 アップロードのセキュリティ.
 * Manual:Configuration settings#Uploads はファイルのアップロードに関する設定変数のリスト
 * - 同上のリストをカテゴリ別に表示 (ABC 順)
 * ファイルのアップロードをしたのに白紙のページが表示された場合
 * 新しいファイルタイプのサポート追加