Manual:Configuring file uploads/cs

MediaWiki podporuje nahrávání a integraci mediálních souborů. Tato stránka popisuje technické aspekty této funkce, obecné informace o použití viz a.

Počínaje verzí MediaWiki 1.1 je nahrávání zpočátku z bezpečnostních důvodů zakázáno. Nahrávání lze povolit prostřednictvím nastavení konfigurace, i když se doporučuje nejprve zkontrolovat určité předpoklady.

Předpoklady


Ujistěte se, že je v PHP povoleno nahrávání
V je třeba nastavit následující:

Pokud toto není nastaveno, PHP skripty nemohou používat funkce nahrávání a nahrávání MediaWiki nebude povoleno.

Pokud je nastavena direktiva open_basedir, musí obsahovat jak cílovou složku pro nahrávání ve vaší instalaci MediaWiki ("{$IP}/images"), tak složku 'upload_tmp_dir' (výchozí systémová složka, pokud není nastavena). Přidání 'upload_tmp_dir' může zabránit zprávám jako "Nelze najít soubor "/var/tmp/php31aWnF" (kde v tomto příkladu 'upload_tmp_dir' je '/var/tmp'). Přečtěte si více o nahrávání souborů PHP na Základy nahrávání souborů a zejména.



Zkontrolujte uživatele systému Windows a IIS
Nastavte  tak, aby měl oprávnění pro internetový účet hosta ( _MachineName nebo   pro IIS 7+): Čtení, zápis a provést;



Zkontrolujte zabezpečení adresáře
Adresář pro nahrávání je třeba nakonfigurovat tak, aby koncový uživatel nemohl nahrávat a spouštět další skripty, které by pak mohly zneužít přístup k vašemu webovému adresáři a poškodit vaši wiki nebo webovou stránku. .

Nastavte složku  (nebo složku   v předchozích verzích), aby měla oprávnění "755":


 * User může číst, zapisovat a spouštět;
 * Group může číst a spouštět;
 * World může číst a spouštět.

Pokud používáte, nezapomeňte odpovídajícím způsobem upravit ACL (viz tam).


 * Omezení výpisu adresářů ve složce obrázků

Pokud nechcete, aby veřejný uživatel vypisoval vaši složku obrázků, můžete to nastavit v konfiguraci Apache:



Zkontrolujte soubor .htaccess
Adresář  v instalační složce MediaWiki obsahuje soubor .htaccess s některými konfiguracemi. Cílem tohoto souboru je zajistit větší zabezpečení složky pro nahrávání, a pokud umístíte svůj adresář pro nahrávání někam jinam, doporučuje se také zkopírovat soubor .htaccess do nového umístění nebo použít tuto konfiguraci přímo na serveru. Některé z těchto konfigurací však mohou způsobit konflikty nebo chyby v závislosti na konfiguraci serveru.

Některé věci, které je třeba vzít v úvahu:


 * Pokud server neumožňuje nastavit nebo přepsat direktivy v souborech .htaccess, může mít přístup k libovolnému souboru v této složce za následek obecnou "chybu HTTP 500". V takovém případě byste měli řádky okomentovat a aplikovat tyto direktivy přímo na konfigurační soubory serveru. Direktivy, které s největší pravděpodobností způsobují problémy, jsou  — který brání souborům HTML a PHP sloužit jako HTML — a   — který by bránil analyzovat a spouštět soubory PHP na serveru jako takovém.



Zapnutí/vypnutí nahrávání
V MediaWiki verze 1.5 a novější je atribut, který má být nastaven, umístěn v  a je nastaven následovně:

Chcete-li funkci nahrávání zakázat, nastavte atribut na hodnotu false:



Použití centrálního úložiště
InstantCommons je funkce povolená změnou konfigurace, která vám poskytuje okamžitý přístup k milionům bezplatných (volně licencovaných) souborů na Wikimedia Commons.



Oprávnění k nahrávání
Ve výchozím nastavení mohou soubory nahrávat všichni registrovaní uživatelé. Chcete-li to omezit, musíte změnit :


 * Chcete-li zabránit běžným uživatelům v nahrávání souborů:


 * Chcete-li vytvořit speciální skupinu s názvem "uploadaccess" a umožnit členům této skupiny nahrávat soubory:


 * Chcete-li povolit "autoconfirmed" (automaticky potvrzeným) uživatelům (nezačátečníkům) nahrávat soubory:

The right to replace existing files is handled by an extra permission, called :


 * To prevent normal users from overriding existing files:


 * To allow "autoconfirmed" (non-newbie) users to replace existing files:

If a ForeignFileRepo is set, the right to replace those files locally is handled by an special permission, called :


 * To prevent normal users from overriding filerepo files locally:


 * To allow "autoconfirmed" (non-newbie) users to replace filerepo files locally:

See Manual:User rights for details on user rights, and Manual:Preventing access for more information about restricting access.

Configuring file types
You can add in  to allow uploads of other desired file types. For example, you can change the $wgFileExtensions line to look something like

or

or

However, certain file extensions are blacklisted and cannot be uploaded even if added to $wgFileExtensions. To upload files with blacklisted extensions, you must modify the blacklist. For instance, to allow users to upload executables:

In addition, 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).

You can also set

to allow most types of file to be uploaded. However, blacklisted filetypes and MIME types will still not be permitted.

If you are getting the error "The file is corrupt or has an incorrect extension", make sure mime type detection is working properly.

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

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

Log in
By default anonymous uploads are not allowed. You must register and log in before the upload file link appears in the toolbox.

Thumbnailing
For information about automatic rendering/thumbnailing of images, see . For problems with thumbnailing, see Image Thumbnails not working and/or appearing.

If the file is not visual (like an Image or Video) a fileicon is used instead. These are generated by the  function in the File class in the FileRepo group. Icons stored in " " in a " "-format.

Set maximum size for file uploads
Browsers tell the server the size of the file to be uploaded before it actually sends the file.

If the upload is too big, it is rejected by the target (server) and the upload fails providing multiple errors depending at which layer the limit was imposed:


 * If it's a server limit (nginx, Apache) on the maximum amount of transmitted data, it may simply fail with a HTTP 500 error or HTTP 413 – Request entity too large.
 * If the limit it's at the PHP level, if post_max_size is hit, you may get a generic HTTP 500 error (or simply a blank page) otherwise, MediaWiki should give a more meaningful error message.



By default, the configuration code in limits the size of files to be uploaded to 2 megabytes (and the maximum size of a post operation to 8 megabytes). To allow uploading of larger files, edit these parameters in php.ini:


 * , 8 megabytes large by default
 * , 2 megabytes large by default

This may require root access to the server. (If you are on a shared host, contact your server administrator.)

The location of the php.ini file varies on the distribution you are using. See for instructions for locating php.ini used by your server.
 * Locating the php.ini file :

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;:
 * Multiple websites hosted on a server :

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. For Nginx, client_max_body_size is the relevant setting. For Lighttpd, server.max-request-size is what may need modification.

Ubuntu 16.04:

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


 * uploading too large of files warning :

MediaWiki itself issues a warning if you try to upload files larger than what is specified by option. This is independent of the hard limit imposed by PHP.


 * temporary upload limits :

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

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

  

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:

Also, modify the following lines in :

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:

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:

Allowing Java JAR Uploads
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:

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 text 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.

Uploading directly from a URL ("Sideloading")
If you want to allow a user to directly upload files from a URL, instead of from a file on their local computer, set.

By default, upload by URL are only possible using the API (or extensions such as ). To make the option usable from Special:Upload, you need to set to  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. 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 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.

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

Upload directory
Whenever an image is uploaded, several things are created:

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

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) 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, 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. See the documentation of this feature.

Take into account that localized versions like MediaWiki:Licenses/de won't work by default. To enable them you must configure the 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).

Known problems on 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, with the message .

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

Known problems with database names having non-alphanumeric characters
If  contains non-alphanumeric characters, uploads may fail with errors like Could not create directory "mwstore://local-backend/local-public/&lt;path&gt;". . This is caused by an internal check for valid container name for file backend, but it's constructed using.

Since MediaWiki 1.26, it allows uploads when contains dots.