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.

Ve výchozím nastavení je nahrávání pomocí URL možné pouze pomocí API (nebo rozšíření, jako je ). Aby byla možnost použitelná ze Special:Upload, musíte také nastavit na. Na formuláři pro nahrávání pak uvidíte další pole pro adresu URL pod obvyklým polem názvu souboru. Pole URL je ve výchozím nastavení zašedlé, ale lze jej aktivovat přepínacím tlačítkem (zaškrtávacího políčka) nalevo od pole.

Aby uživatelé mohli používat tuto funkci, musí mít uživatelské právo. Toto právo bylo sysopům standardně uděleno až do MediaWiki 1.20, ale nyní je třeba je udělit explicitně. Chcete-li to umožnit normálním uživatelům, nastavte Mějte na paměti, že povolení nahrávání přímo z libovolného místa na webu usnadňuje nahrávání náhodného nechtěného materiálu a může být špatně pochopeno jako pozvánka k nahrávání čehokoli, s čím se lidé mohou na webu setkat.



Hromadné nahrávání
Pro nahrání více souborů najednou je k dispozici řada nástrojů, nikoli každý soubor samostatně:

<span id="Upload_directory">

Adresář pro nahrání
Při každém nahrání obrázku se vytvoří několik věcí:


 * 1) Článek ve jmenném prostoru souboru s názvem souboru, např. Soubor:MyPicture.png. Tato stránka je uložena a lze ji upravovat jako kteroukoli jinou stránku.
 * 2) Soubor samotný je uložen do složky v souborovém systému, který je nakonfigurován v  nebo do jedné z jejích podsložek (viz níže).
 * 3) Pokud je k dispozici miniatura, v případě potřeby se vytvoří miniaturní verze souboru (například pro použití na stránce s popisem souboru. Ty jsou uloženy v adresáři thumb adresáře s obrázky, v samostatném adresáři pro každý hlavní soubor.

Pokud je povoleno (ve výchozím nastavení), MediaWiki vytvoří několik podadresářů v adresáři obrázků.

Pokud je  nastaveno na , nahrané soubory budou distribuovány do podadresářů $wgUploadDirectory na základě prvních dvou znaků md5 hash názvu souboru. (např. $IP/images/a/ab/foo.jpg) Vytvoření takových podadresářů probíhá automaticky. Toho se používá, aby se zabránilo příliš mnoha souborům v jedné složce, protože některé systémy souborů nefungují dobře s velkým počtem souborů v jedné složce.

Pokud máte pouze malou wiki s malým počtem nahraných obrázků, můžete to vypnout nastavením, všechny obrázky se nahrávají v samotném $wgUploadDirectory. (např. $IP/images/foo.jpg)

<span id="Multiwiki_sites">

Multiwiki stránky

 * Ujistěte se, že jste změnili umístění webu v LocalSettings.php z, např. /var/lib/mediawiki do libovolného místa instalace a vytvořil adresář s obrázky, do kterého lze zapisovat (většinu zbytku lze symbolicky propojit).

Pokud tak neučiníte, dojde k záhadnému přerušení nahrávání obrázků.

<span id="Configuring_the_upload_form">

Konfigurace formuláře pro nahrávání
Zpráva formuláře pro nahrání poskytnutá s výchozí instalací MediWiki (která se zobrazí, když kliknete na odkaz "Nahrát soubor" nebo přejdete na odkaz Special:Upload), nemusí se vám hodit.

V takovém případě můžete upravit obsah MediaWiki:Uploadtext a zadat svůj vlastní text. Pokud je vaše wiki stránka vícejazyčná, nezapomeňte upravit lokalizované verze jako MediaWiki:Uploadtext/de.

Na stránce MediaWiki:Licenses si můžete přizpůsobit rozevírací seznam licencí pro nahrávání vašich stránek. Viz dokumentaci této funkce.

Vezměte v úvahu, že lokalizované verze jako MediaWiki:Licenses/de nebudou ve výchozím nastavení fungovat. Chcete-li je povolit, musíte nakonfigurovat proměnnou.

Upravte MediaWiki:Upload-default-description a přidejte počáteční text do pole "Souhrn" formuláře pro nahrávání (například vaše wiki stránka má univerzální šablonu pro souhrny pro nahrávání a chcete, aby tuto šablonu používali všichni).

<span id="Known_problems_on_Windows">

Známé problémy ve Windows
Spuštění MediaWiki na Windows serveru má určitá omezení v povolených názvech souborů kvůli chybě PHP. PHP nedokáže správně zpracovat názvy souborů s jinými znaky než ASCII a MediaWiki odmítne nahrát soubory obsahující takové znaky, aby se zabránilo nefunkčnímu nahrávání, se zprávou .

Od MediaWiki 1.31 MediaWiki může zpracovávat názvy souborů s neascii znaky, pokud používá PHP 7.1 nebo novější.

<span id="Known_problems_with_database_names_having_non-alphanumeric_characters">

Známé problémy s názvy databází s nealfanumerickými znaky
Pokud  obsahuje nealfanumerické znaky, nahrávání může selhat s chybami jako Nelze vytvořit adresář "mwstore://local-backend/local-public/&lt;path&gt;". . To je způsobeno interní kontrolou platného názvu kontejneru pro backend soubor, ale je vytvořen pomocí.

Od MediaWiki 1.26 umožňuje nahrávání, když obsahuje tečky.

<span id="See_also">

Související odkazy

 * Security section Upload security
 * Manual:Configuration settings#Uploads for a list of all configuration variables related to file uploads
 * - similar list as a category (ordered alphabetically)
 * You see a blank page when trying to upload a file
 * Adding support for new filetypes