Manual:ファイルのアップロードの設定

From MediaWiki.org
Jump to: navigation, search
This page is a translated version of the page Manual:Configuring file uploads and the translation is 44% complete.

Other languages:
Deutsch • ‎English • ‎français • ‎Bahasa Indonesia • ‎日本語 • ‎polski • ‎русский • ‎中文

MediaWikiはメディアファイルのアップロードと統合をサポートします。 このページではこの機能の技術的な面を説明します。一般的な使い方の情報についてはManual:Image administration/jaHelp:Images/jaをご覧下さい。

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

前提条件

アップロードがPHPで有効になっていることを確認する

以下の項目は php.iniManual:Php.ini で設定する必要があります:

file_uploads = On

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

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

Note: The formal value for the variable is a boolean expression. PHPはFalse値として認識されない各文字列をtrueとして扱います。したがって、よく使われる「on」値は同じ結果をもたらします。

Check for Windows and IIS users

Set %SystemRoot%\TEMP to have permissions for the Internet Guest Account (IUSR_MachineName, or IUSR for IIS 7+): Read, write and execute;

ディレクトリのセキュリティを調査する

アップロードディレクトリはend userのためにアップロードとウェブディレクトリに不正なアクセスをしてwikiもしくはウェブサイトに損害を与える可能性のある他のスクリプトを実行できないように設定することが必要です。

どのunixセキュリティ設定をすればよいのか? chmod755? そしてWindowsは?
  • ユーザーは読み取り、書き込み、実行ができるようにします。
  • グループは読み取り、実行ができるようにします。
  • ワールドは読み取り、実行ができるようにします。

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

sudo chown -R www-data:www-data images/

If using CentOS 6 or Mageia the owner:group in the chown command should be "apache:apache" instead of "www-data:www-data".

If using SELinux, make sure to adjust the ACLs accordingly (see there).

If using suphp, make sure the umask is set to 0022 (or less) in /etc/suphp.conf.

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

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

        <Directory /var/www/wiki/images>
                Options -Indexes
        </Directory>

.htaccess ファイルの確認

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

Some things to take into account:

  • サーバーが.htaccessファイルのディレクティブを設定または上書きできない場合、そのフォルダーの下のファイルにアクセスすると、一般的な「HTTP 500エラー」が発生する可能性があります。 その場合は、行をコメントアウトし、それらのディレクティブをサーバー構成ファイルに直接適用する必要があります。 問題の原因となる可能性の高いディレクティブは、HTMLとPHPファイルがHTMLとして扱われるのを防ぐ$ AddTypeとPHPファイルがサーバー上で解析されて実行されないようにするphp_admin_flagです。
  • MediaWiki 1.27より前に、thumb.phpManual:thumb.phpスクリプトでサムネイルを生成するカスタム404ハンドラがある場合、この.htaccessファイルの書き換えルールは、RewriteOptions inheritオプション(タスク T67220)がないため、以前のルールを無効にすることがあります。

アップロードをon/offに設定する

MediaWiki バージョン: 1.5

MediaWiki バージョン 1.5以降は、設定する属性はLocalSettings.phpに存在し、内容は以下の通りです:

$wgEnableUploads = true; # アップロードを有効にする

期待通りこれはアップロードを有効にします。 無効にするためにはこの属性をfalseに設定します:

$wgEnableUploads = false; # アップロードを無効にする


MediaWiki バージョン: 1.4

ソフトウェアの古いバージョンでは、設定する属性はLocalSettings.phpに存在しますが、逆転しています、すなわち$wgDisableUploadsです。 デフォルトは次の通りです:

$wgDisableUploads = true; # アップロードを無効にする

アップロードを有効にするために値を反転させる:

$wgDisableUploads = false; # アップロードを有効にする

集中リポジトリを使う

InstantCommonsは設定変更が可能な機能で、ウィキメディアコモンズの何百万という無料の(自由にライセンスされた)ファイルにすぐにアクセスできます。

アップロードの権限

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

一般ユーザにはファイルアップロードを許可しない
$wgGroupPermissions['user']['upload'] = false;
To create a special group called 「uploadaccess」と呼ばれる特殊グループを作成し、そのグループに所属するメンバーにファイルアップロードを許可する
$wgGroupPermissions['uploadaccess']['upload'] = true;
自動的に確認された(新規ではない)ユーザにファイルアップロードを許可する
$wgGroupPermissions['autoconfirmed']['upload'] = true;

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

一般ユーザに既存ファイルの上書きを許可しない
$wgGroupPermissions['user']['reupload'] = false;
自動的に確認された(新規ではない)ユーザにファイル更新を許可する
$wgGroupPermissions['autoconfirmed']['reupload'] = true;

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

ローカルにあるファイルレポジトリのファイルの上書きを一般ユーザに許可しない
$wgGroupPermissions['user']['reupload-shared'] = false;
自動的に確認された(新規ではない)ユーザに対しローカルのファイルレポジトリにあるファイルの置換を許可する
$wgGroupPermissions['autoconfirmed']['reupload-shared'] = true;

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

ファイルタイプの設定

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

$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'doc',
    'xls', 'mpp', 'pdf', 'ppt', 'tiff', 'bmp', 'docx', 'xlsx',
    'pptx', 'ps', 'odt', 'ods', 'odp', 'odg'
);

もしくは

$wgFileExtensions = array_merge( $wgFileExtensions,
    array( 'doc', 'xls', 'mpp', 'pdf', 'ppt', 'xlsx', 'jpg', 
        'tiff', 'odt', 'odg', 'ods', 'odp'
    )
);

もしくは

# DefaultSettings.php で定義されている既存のアップロード許可ファイル種別リストに、新たなファイル種を追加してください。
$wgFileExtensions[] = 'docx';
$wgFileExtensions[] = 'xls';
$wgFileExtensions[] = 'pdf';
$wgFileExtensions[] = 'mpp';
$wgFileExtensions[] = 'odt';
$wgFileExtensions[] = 'ods';

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

$wgFileExtensions[] = 'exe';
$wgFileBlacklist = array_diff( $wgFileBlacklist, array ('exe') );

In addition, $wgMimeTypeBlacklist prevents certain file types based on MIME type; .zip files, for example, are prohibited based on MIME type (MediaWiki version 1.14 up to 1.17).

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

$wgStrictFileExtensions = false;

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

警告 警告: $wgStrictFileExtensionsをfalseに設定するか、$wgFileBlacklistを変更すると、セキュリティリスクにさらされる可能性があります。

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

If you decide to allow any kind of file, make sure your mime detection is working and think about enabling virus scans for uploads.

To enable zip extension (tested in MediaWiki v1.19.23) the following will be necessary in the LocalSettings.php file:

$wgFileExtensions[] = 'zip';
// $wgTrustedMediaFormats[] = 'ARCHIVE';
$wgTrustedMediaFormats[] = 'application/zip';

ログイン

標準では、anonymousによるアップロードは許可されていません。 You must register and logon before the upload file option appears in the toolbox.

サムネイル

自動的な画像のレンダリング/サムネイリングの情報については、Manual:Image administration/ja#画像のサムネイルをご覧下さい For problems with thumbnailing, see Image Thumbnails not working and/or appearing.


MediaWiki バージョン: 1.11

ファイルが画像やビデオのように視覚的でない場合、代わりにファイルアイコンが使用されます。 These are generated by the iconThumb() function in the File class in the FileRepo group. Icons stored in "$wgStyleDirectory/common/images/icons/" in a "fileicon-$extension.png"-format.

ファイルのアップロードのための最大サイズを設定する

php.iniのpost_max_sizeとupload_max_filesize

既定では、php.iniManual:Php.iniの設定は、アップロードされるファイルのサイズを2メガバイト(およびポスト操作の最大サイズは8メガバイト)に制限します。 さらに大きなファイルをアップロードしたい場合、post_max_size([1])とupload_max_filesize([2])パラメータを変更して下さい。

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

If you are increasing the maximum upload filesize to a value greater than 100MB, you will need to add $wgMaxUploadSizeManual:$wgMaxUploadSize with the new upload filesize value to LocalSettings.phpManual:LocalSettings.php.
Locating the php.ini file
Typical location in which php.ini may be found.

The location of the php.ini file varies on the distribution you are using. (Try "locate php.ini" or "php -i" to find the location of your config file.) [1]

It is important to change the php.ini file in the apache2 folder. For example, there may be a core default php.ini at /etc/php5/cli/php.ini as well as one at /etc/php5/apache2/php.ini. If you are using mod_php (most common), the most likely location for the correct php.ini file is in /etc/php5/apache2 or /etc/php/7.0/apache2. For php-fastcgi, edit /etc/php5/cgi/php.ini.

Multiple websites hosted on a server

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 <Virtual Host>:

php_value upload_max_filesize 100M
php_value post_max_size 100M

Both above settings also work in a .htaccess file if your site uses mod_php. If your site uses PHP >= 5.3 and allows it, you can place php.ini directives in .user.ini files instead.

web server limits

Your web server may impose further limits on the size of files allowed for upload. For Apache, one of the relevant settings is LimitRequestBody. [2] For Nginx, client_max_body_size is the relevant setting.[3] For Lighttpd, server.max-request-size is what may need modification.[4]

After editing your php.ini or web server configuration, you will need to restart Apache or IIS.

Ubuntu 16.04: sudo service apache2 restart

You may also need to restart php5-fpm after altering your PHP (or ngingx server?) configuration.

(sudo /etc/init.d/php5-fpm restart in Linux, for example.)

uploading too large of files warning

MediaWikiは$wgUploadSizeWarningオプションよりも大きなファイルをアップロードしようとすると警告を発します。 これはPHPによる制限とは独立しています。 MediaWiki also has a $wgMaxUploadSize option, but that is currently not enforced for normal uploads (when uploading a local file). The only way of restricting the upload size is through the use of modifying the php configuration.

temporary upload limits

Temporary changes to upload limits (when using multiple wikis on a farm, for example) can be altered by adding the lines:

ini_set( 'post_max_size', '50M' );
ini_set( 'upload_max_filesize', '50M' );

to the MediaWiki LocalSettings.php configuration file for each wiki. In this example the PHP limit is set at 50 Mb. Note that these settings will not override the maximum settings set above (since the core php.ini and apache2 php.ini files set the absolute maximum). This method sets maximums that are less than the absolute maximum.

IIS7 upload limit
By default, IIS7[5] on Windows 2008 allows only 30MB to be uploaded via a web application. Larger files will return a 404 error after the upload. If you have this problem, you can solve it by increasing the maximum file size by adding the following code to <system.webServer> in the web.config file:
<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="50000000" />
  </requestFiltering>
</security>

With the above maxAllowedContentLength, users can upload files that are 50,000,000 bytes (50 MB) in size. This setting will work immediately without restarting IIS services. The web.config file is located in the root directory of your web site.

To allow uploading files up to 2G:

add the following lines to LocalSettings.php:

$wgUploadSizeWarning = 2147483647;
$wgMaxUploadSize = 2147483647;

Also, modify the following lines in php.iniManual:Php.ini:

memory_limit = 2048M (this line may not be necessary)
post_max_size = 2048M
upload_max_filesize = 2048M

In the IIS web.config file, override the value of maxRequestLength. For example, the following entry in web.config allows files that are less than or equal to 2 gigabytes (GB) to be uploaded:

<httpRuntime maxRequestLength="2097151" executionTimeout="18000"/>

With IIS 7, you also need to configure it to allow large uploads. This is found by clicking “Request Filtering > Edit Feature Settings” in the IIS section in the middle of the window. 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.

If the above tip does not enable large uploads, then open a command prompt and execute this command as well:

%windir%\system32\inetsrv\appcmd set config -section:requestFiltering -requestLimits.maxAllowedContentLength: 2147482624


Java JAR のアップロードの許可

By default, MediaWiki will scan all uploads that appear to be ZIP archives and reject any that contain Java .class files. This is a security measure to prevent users uploading a malicious Java applet. For non-public sites only, use the following to disable this check:

$wgAllowJavaUploads = true;

This setting can be used as a work around for allowing mimetypes to be accepted indiscriminately. For example, if you attempt to upload a .doc file created by Word 2007, no matter the ext list you provide and mimetype checking you invoke or prohibit, you will receive the message:

The file is a corrupt or otherwise unreadable ZIP file. It cannot be properly checked for security.

.doc files saved by Word 2007 (and possibly later versions) contain a small embedded ZIP archive storing metadata that is not representable in the binary .doc format as used by earlier versions of Word. This embedded ZIP data confuses the Java archive scanner, causing the .doc file to be rejected. Files in the newer .docx file format are valid ZIP archives in their entirety, and can be uploaded successfully without setting $wgAllowJavaUploadsManual:$wgAllowJavaUploads.

URLより直接ダウンロード("Sideloading")

コンピュータ内のファイルの代わりにURLを指定する直接ダウンロードをユーザに対し許可する場合、 $wgAllowCopyUploads = trueとしてください。

By default, upload by URL are only possible using the API (or extensions such as UploadWizard). To make the option usable from Special:Upload, you need to set $wgCopyUploadsFromSpecialUpload to true as well. On the upload form, you will then see an additional field for the URL, below the usual filename field. The URL field is greyed out per default, but can be activated by activating the radiobutton (checkbox) to the left of the field.

In order to use this feature, users must have the user right upload_by_url. This right was granted to sysops by default until MediaWiki 1.20 but it now needs to be granted explicitly. To allow this to normal users, set

 $wgGroupPermissions['user']['upload_by_url'] = true;

Keep in mind that allowing uploads directly from an arbitrary location on the web makes it easier to upload random, unwanted material, and it might be misunderstood as an invitation to upload anything that people might come across on the web.

PHP's cURL support must be enabled to support this feature. Configure your PHP when installing using the --with-curl option.
If your server is accessing internet through a proxy then $wgHTTPProxy needs to be set accordingly. Either you supply it directly or, if your server supplies the environment variable "http_proxy" see your phpinfo(), then you could use the following code in your LocalSettings.php:
/*
 * Proxy to use for CURL requests.
 */
if ( isset( $_ENV['http_proxy'] )) $wgHTTPProxy = $_ENV['http_proxy'];

削除した画像の復元

Undeleting images is possible as an option since MediaWiki 1.8, and enabled by default since MediaWiki 1.11.

Prior to MediaWiki 1.11, you can enable undeletion of images by setting $wgSaveDeletedFiles = true. Since version 1.11, the behavior is controlled by $wgFileStore, and deleted files are per default stored in $wgUploadDirectory/deleted. Since version 1.17, $wgFileStore has been deprecated and $wgDeletedDirectoryManual:$wgDeletedDirectory should be used instead.

Mass uploading

A number of tools are available for uploading multiple files in one go rather than each file separately:


拡張機能 説明 リリースの状態 要件
Extension:UploadWizardExtension:UploadWizard ウィキメディア・コモンズで使用されています 安定版 MediaWiki 1.23+
Extension:MsUploadExtension:MsUpload Allows a user to upload multiple files including by dragging & dropping files. 安定版 1.17, 1.18, 1.19, 1.20, 1.21, 1.22
Extension:SimpleBatchUploadExtension:SimpleBatchUpload Basic, no-frills uploading of multiple files to MediaWiki 安定版 1.26+
Extension:UploadLocalExtension:UploadLocal ベータ版
Extension:MultiUploadExtension:MultiUpload 現在は保守されていません 破損 1.19+
Commonist (external link to Wiki Commons) api.php でのファイル アップロードに必要です。
importImages.phpManual:importImages.php "Place the files on the server in a readable location and execute the maintenance/importImages.php script from the command line."[6]
User:Nichalp/Upload script
Commons:File upload service/Script 廃止予定
User:File Upload Bot (Kernigh)

アップロード ディレクトリ

Whenever an image is uploaded, several things are created:

  1. An article in the file namespace with the name of the file, e.g. File:MyPicture.png. This page is stored and can be edited like any other page.
  2. The file itself is stored into the folder on the file system, which is configured in $wgUploadDirectory or into one if its subfolders (see below).
  3. If necessary and thumbnailing is available, thumbnailed versions of the file will be created when necessary (such as for the usage on the file description page. These are stored in the thumb directory of the image directory, in a separate directory for each main file.

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

If $wgHashedUploadDirectory is set to true, 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) Creation of such subdirectories is handled automatically. This is used to avoid having too many files in one folder because some filesystems don't perform well with large numbers of files in one folder.

If you only maintain a small wiki with few uploaded images, you could turn this off by setting $wgHashedUploadDirectory = false, all images are uploaded in $wgUploadDirectory itself. (e.g. $IP/images/foo.jpg)

Multiwiki sites

  • Make sure you've changed the site location in LocalSettings.php from, e.g. /var/lib/mediawiki to wherever your installation is, and created a writeable images directory (most of the rest can be symlinked).

Not doing so will mysteriously break image uploads.

Configuring the upload form

The upload form message provided with the default MediWiki installation (which appears when you click "Upload file" link or go to Special:Upload link) may not go very well for you.

For that case you can edit MediaWiki:Uploadtext contents and provide your own text. If your wiki site is multilanguage don't forget to edit localized versions like MediaWiki:Uploadtext/de.

On the MediaWiki:Licenses page you can customize a drop-down list of licenses for uploads of your site.

Take into account that localized versions like MediaWiki:Licenses/de won't work by default. To enable them you must configure the $wgForceUIMsgAsContentMsg variable.

Edit MediaWiki:Upload-default-description to add an initial text to the "Summary" field of your upload form (for example your wiki site has a universal template for upload summaries and you want everyone to use that template).

関連項目: Upload form changesUpload form changes

Windowsにおける既知の問題

Running MediaWiki on Windows server has some restrictions in allowed filenames, due to a PHP bug. PHP can't handle filenames with non-ascii characters on it correctly, and MediaWiki will refuse to upload files containing such characters to prevent broken uploads (タスク T3780), with the message このウィキではファイル名に特殊文字を使用できません。.

Since MediaWiki 1.31 MediaWiki can handle filenames with non-ascii characters if it's using PHP 7.1 or later.

英字・数字以外の文字を使用したデータベースにおける既知の問題

もし $wgDBname に 英字・数字以外の文字が含まれている場合、以下のようなエラーが発生する場合があります: Could not create directory "mwstore://local-backend/local-public/<path>".. This is caused by an internal check for valid container name for file backend, but it's constructed using $wgDBname.

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

関連項目

脚注

  1. For an example of where the php.ini file is, see Where is php.ini located?.
  2. LimitRequestBody, Apache manual
  3. client_max_body_size, Nginx manual
  4. server.max-request-size, Lighthttpd manual
  5. IIS7 is a new revision (version 7.0) of the Internet Information Services that is part of Windows Vista and the next Windows Server version.
  6. http://xpt.sourceforge.net/techdocs/language/wiki/wikimedia/wkm07-MediaWikiImport/index.html#mass_image_upload_zip_