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:

Právo nahradit existující soubory je řešeno zvláštním oprávněním, které se nazývá :


 * Chcete-li běžným uživatelům zabránit v přepsání existujících souborů:


 * Chcete-li umožnit "automaticky potvrzeným" uživatelům (nezačátečníkům) nahradit existující soubory:

Pokud je nastaveno ForeignFileRepo, právo na místní nahrazení těchto souborů se řídí speciálním oprávněním, které se nazývá :


 * Chcete-li běžným uživatelům zabránit v místním přepisování souborů filerepo:


 * Chcete-li umožnit "automaticky potvrzeným" uživatelům (nezačátečníkům) nahradit soubory filerepo lokálně:

Viz Příručka:Uživatelská práva pro podrobnosti o uživatelských právech a Příručka:Zabránění přístupu pro více informací o omezení přístupu.



Konfigurace typů souborů
Můžete přidat do, abyste umožnili nahrávání jiných požadovaných typů souborů. Můžete například změnit řádek $wgFileExtensions, aby vypadal nějak takto

nebo

nebo

Některé přípony souborů jsou však na černé listině a nelze je nahrát, i když jsou přidány do $wgFileExtensions. Chcete-li nahrát soubory s příponami na černé listině, musíte černou listinu upravit. Chcete-li například uživatelům umožnit nahrávat spustitelné soubory:

Navíc zabraňuje určitým typům souborů založeným na MIME typu; Soubory .zip jsou například zakázány na základě typu MIME (MediaWiki verze 1.14 až 1.17).

Můžete také nastavit

aby bylo možné nahrát většinu typů souborů. Stále však nebudou povoleny typy souborů na černé listině a typy MIME.

Pokud se vám zobrazuje chyba "Soubor je poškozený nebo má nesprávnou příponu", ujistěte se, že detekce typu mime funguje správně.

Pokud se rozhodnete povolit jakýkoli druh souboru, ujistěte se, že vaše detekce mime funguje a zvažte.

Chcete-li povolit rozšíření zip (testováno v MediaWiki v1.19.23), bude v souboru LocalSettings.php nutné následující:



Přihlášení
Ve výchozím nastavení není anonymní nahrávání povoleno. Než se v panelu nástrojů zobrazí odkaz nahrát soubor, musíte se zaregistrovat a přihlásit.

Náhled
Informace o automatickém vykreslování/miniaturách obrázků viz . Problémy s náhledy viz Miniatury obrázků nefungují a/nebo se nezobrazují.

Pokud soubor není vizuální (jako obrázek nebo video), použije se místo něj ikona souboru. Ty jsou generovány funkcí  ve třídě File ve skupině FileRepo. Ikony uložené v " " ve formátu " ".



Nastavení maximální velikosti pro nahrávání souborů
Prohlížeče sdělí serveru velikost souboru, který má být nahrán, ještě předtím, než soubor skutečně odešle.

Pokud je nahrávání příliš velké, je cílem (serverem) odmítnuto a nahrávání se nezdaří a poskytuje více chyb v závislosti na tom, na které vrstvě byl limit uložen:


 * Pokud se jedná o serverový limit (nginx, Apache) na maximální množství přenášených dat, může jednoduše selhat s chybou HTTP 500 nebo HTTP 413 – entita požadavku je příliš velká.
 * Pokud je limit na úrovni PHP, pokud je dosaženo post_max_size, můžete dostat obecnou chybu HTTP 500 (nebo jednoduše prázdnou stránku), jinak by MediaWiki měla poskytnout smysluplnější chybovou zprávu.



Ve výchozím nastavení omezuje konfigurační kód v velikost nahrávaných souborů na 2 megabajty (a maximální velikost post operace na 8 megabajtů). Chcete-li povolit nahrávání větších souborů, upravte tyto parametry v php.ini:


 * , ve výchozím nastavení 8 megabajtů
 * , ve výchozím nastavení 2 megabajty

To může vyžadovat root přístup k serveru. (Pokud jste na sdíleném hostiteli, obraťte se na správce serveru.)

Umístění souboru php.ini se liší podle distribuce, kterou používáte. Pokyny k nalezení php.ini, které váš server používá, najdete v.
 * Vyhledání souboru php.ini:

Pokud máte více než jednu webovou stránku hostovanou na serveru a chcete změnit pouze pro MediaWiki, vložte do svého /etc/apache2/sites-enabled/your_wiki_site.com uvnitř &lt;Virtual Host&gt; (virtuálního hostitele):
 * Více webových stránek hostovaných na serveru:

Obě výše uvedená nastavení fungují také v souboru .htaccess, pokud váš web používá mod_php. Pokud váš web používá PHP >= 5.3 a umožňuje to, můžete místo toho umístit direktivy php.ini do .user.ini souborů.


 * Limity webového serveru:

Váš webový server může uložit další limity na velikost souborů povolených pro nahrávání. Pro Apache je jedním z relevantních nastavení LimitRequestBody. Pro Nginx, relevantní nastavení je client_max_body_size. Pro Lighttpd, server.max -request-size může vyžadovat úpravu.

Ubuntu 16.04:

(sudo /etc/init.d/php5-fpm restartujte například v Linuxu.)


 * Upozornění na nahrávání příliš velkých souborů:

Samotná MediaWiki vydá varování, pokud se pokusíte nahrát soubory větší, než je specifikováno volbou. To je nezávislé na pevném limitu stanoveném PHP.


 * Dočasné limity nahrávání:

Dočasné změny limitů nahrávání (například při používání více wikin na farmě) lze změnit přidáním řádků:

do konfiguračního souboru MediaWiki LocalSettings.php pro každou wiki. V tomto příkladu je limit PHP nastaven na 50 Mb. Všimněte si, že tato nastavení nepřepíší maximální nastavení nastavená výše (protože základní soubory php.ini a apache2 php.ini nastavují absolutní maximum). Tato metoda nastavuje maxima, která jsou menší než absolutní maximum.


 * Limit nahrávání IIS7

  

S výše uvedenou maxAllowedContentLength mohou uživatelé nahrávat soubory o velikosti 50 000 000 bajtů (50 MB). Toto nastavení bude fungovat okamžitě bez restartování služeb IIS. Soubor web.config se nachází v kořenovém adresáři vašeho webu.

Povolení nahrávání souborů až do 2G:

přidejte následující řádky k LocalSettings.php:

Také upravte následující řádky v $php ini:

V souboru web.config IIS přepište hodnotu maxRequestLength. Například následující položka v souboru web.config umožňuje nahrát soubory, které jsou menší nebo rovné 2 gigabajtům (GB):

Se službou IIS 7 ji také musíte nakonfigurovat tak, aby umožňovala nahrávání velkého množství. To zjistíte kliknutím na "Request Filtering > Edit Feature Settings" (filtrování požadavků > upravit nastavení funkcí) v části IIS uprostřed okna. Nastavte pole "Maximální povolená délka obsahu (bajty)" na 2147482624. Pokud v části IIS nevidíte "Request Filtering" (filtrování požadavků), je třeba jej povolit prostřednictvím Internet Information Services > World Wide Web Services > Security (internetových informačních služeb > služby World Wide Web > zabezpečení) v oblasti "Zapnout nebo vypnout funkce systému Windows" v Ovládacích panelech.

Pokud výše uvedený tip neumožňuje nahrávání velkého množství, otevřete příkazový řádek a spusťte také tento příkaz:



Povolení nahrávání Java JAR
Ve výchozím nastavení MediaWiki prohledá všechna nahrání, která vypadají jako archivy ZIP, a odmítne všechna, která obsahují soubory Java .class. Jedná se o bezpečnostní opatření, které má zabránit uživatelům nahrát škodlivý Java applet. Pouze pro neveřejné weby k deaktivaci této kontroly použijte následující:

Toto nastavení lze použít jako obejití pro umožnění přijímání mimetypů bez rozdílu. Pokud se například pokusíte nahrát soubor .doc vytvořený aplikací Word 2007, bez ohledu na zadaný textový seznam a kontrolu typu mime, kterou vyvoláte nebo zakážete, obdržíte zprávu:


 * Soubor je poškozený nebo jinak nečitelný soubor ZIP. Nelze jej řádně zkontrolovat z hlediska bezpečnosti.

Soubory .doc uložené aplikací Word 2007 (a možná i novějšími verzemi) obsahují malý vložený archiv ZIP ukládající metadata, která nelze reprezentovat v binárním formátu .doc používaném v dřívějších verzích aplikace Word. Tato vložená data ZIP mate skener archivu Java a způsobí odmítnutí souboru .doc. Soubory v novějším formátu souboru .docx jsou platné archivy ZIP jako celek a lze je úspěšně nahrát bez nastavení.



Nahrávání přímo z adresy URL ("Sideloading")
Pokud chcete, aby uživatel mohl přímo nahrávat soubory z adresy URL, nikoli ze souboru v místním počítači, nastavte.

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.