Jump to content

Handleiding:Bestandsuploads configureren

From mediawiki.org
This page is a translated version of the page Manual:Configuring file uploads and the translation is 100% complete.

MediaWiki ondersteunt het uploaden en de integratie van media-bestanden. Op deze pagina worden de technische aspecten van deze functie beschreven, zie Handleiding:Afbeeldingenbeheer en Help:Afbeeldingen voor algemene gebruiksinformatie.

Vanaf MediaWiki versie 1.1 worden uploads vanwege veiligheidsgerelateerde redenen standaard uitgeschakeld. Uploaden kan via een configuratieinstelling worden ingeschakeld, hoewel het wordt aanbevolen dat u eerst bepaalde voorwaarden controleert.

Voorwaarden

Zorg ervoor dat uploads in PHP zijn ingeschakeld

De volgende gegevens moeten worden ingesteld in php.ini :

file_uploads = On

Als dit niet is ingesteld, kunnen PHP-scripts de uploadfuncties niet gebruiken en kan het uploaden in MediaWiki niet worden ingeschakeld.

Als de open_basedir instructie is ingesteld, moet deze zowel de doel-uploadmap in uw MediaWiki-installatie ("{$IP}/images") als de map 'upload_tmp_dir' (standaard systeemmap indien niet ingesteld) bevatten. Als dit van kracht is, controleer dan ook of de hoster 'sys_temp_dir' goed heeft geconfigureerd, want soms vergeten ze dat ook en kunt u helemaal geen tijdelijke bestanden schrijven (upload, sessie of een ander tmp-bestand).

De toevoeging van de 'upload_tmp_dir' kan berichten als "Could not find file"/var/tmp/php31aWnF" (waarbij in dit voorbeeld de 'upload_tmp_dir' '/var/tmp' is, voorkomen). Lees meer over het uploaden van PHP-bestanden op Basisprincipes van het uploaden van bestanden en in het bijzonder move_uploaded_file().

De formele waarde voor de variabele is een boolean expressie. PHP behandelt elke string die niet als de waarde False wordt erkend als waar, dus de vaak gebruikte waarde "on" geeft hetzelfde resultaat.

Controle voor Windows en IIS users

Stel %SystemRoot%\TEMP in om toestemming te hebben voor het Internet Guest Account (IUSR_MachineName of IUSR voor IIS 7+): Lezen, schrijven en uitvoeren;

Controleer beveiliging map

De uploadmap moet zo worden geconfigureerd dat het niet mogelijk is voor een eindgebruiker om andere scripts te uploaden en uit te voeren, die vervolgens de toegang tot uw webmap kunnen misbruiken en uw wiki of website kunnen beschadigen.

Stel de map /images (of in eerdere versies de map /uploads) in om toestemming te krijgen "755":

  • User kan lezen, schrijven en uitvoeren;
  • Group kan lezen en uitvoeren;
  • World kan lezen en uitvoeren.
Alleen op de mappen moeten uitvoerbare toestemmingen zijn. Op de bestanden mogen geen uitvoerbare toestemmingen zijn. In Linux, om uitvoerbare toestemmingen te verwijderen van alle bestanden in een map, en om uitvoerbare autorisaties toe te voegen aan de map en alle submappen: chmod -x+X uploads_folder -R

Als u SELinux gebruikt, moet u de ACL's dienovereenkomstig aanpassen (zie hier).

Controleer beveiliging webserver

See Manual:Security#Upload security for changes to make to your webserver configuration to prevent uploaded files from executing code or having browsers execute malicious files.

  • Beperk de mappenlijst in de map met afbeeldingen

Als u niet wilt dat een publieke gebruiker uw afbeeldingenmap ziet (als lijst), er is een optie om dit in de Apache-configuratie te zetten:

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

Bestand .htaccess controleren

De map images in de MediaWiki installatie-map bevat een bestand .htaccess met enkele configuraties. Het doel van dit bestand is om de uploadmap veiliger te maken, en als u de uploadmap ergens anders plaatst, wordt het aanbevolen om het bestand .htaccess ook te kopiëren naar de nieuwe locatie, of die configuratie direct op de server toe te passen. Sommige van deze configuraties kunnen echter conflicten of fouten veroorzaken, afhankelijk van de configuratie van de server.

Er zijn enkele zaken waaraan u moet denken:

  • Als de server niet toestaat of instructies overschrijft in htaccess bestanden, kan toegang tot een bestand onder die map leiden tot een algemene "HTTP 500 fout". Als dat het geval is, moet u de regels op commentaar zetten en die directives direct toepassen op de server configuratiebestanden. De directives die het meest waarschijnlijk de problemen veroorzaken zijn AddType - dat voorkomt dat HTML- en PHP-bestanden als HTML worden geserveerd - en php_admin_flag - die voorkomt dat PHP-bestanden als zodanig worden geanalyseerd en uitgevoerd op de server.

Uploads aan/uit zetten

MediaWiki-versie:
1.5

Vanaf MediaWiki versie 1.5 staat het in te stellen attribuut in LocalSettings.php en wordt $wgEnableUploads als volgt ingesteld:

$wgEnableUploads = true; # Uploaden inschakelen

Om de functie uploaden uit te schakelen, zet het attribuut op false:

$wgEnableUploads = false; # Uploaden uitschakelen

Centrale repository gebruiken

InstantCommons is een functie, mogelijk gemaakt met een configuratiewijziging, die u direct toegang geeft tot de miljoenen gratis (vrij gelicentieerde) bestanden in Wikimedia Commons.

Recht Uploaden

Standaard kunnen alle geregistreerde gebruikers bestanden uploaden. Om dit te beperken, moet u $wgGroupPermissions aanpassen:

  • Om te voorkomen dat normale gebruikers bestanden kunnen uploaden:
    $wgGroupPermissions['user']['upload'] = false;
  • Om een speciale groep te maken die "uploadadaccess" heet en leden van die groep toestaan om bestanden te uploaden:
    $wgGroupPermissions['uploadaccess']['upload'] = true;
  • Om "autobevestigde" (niet-nieuwe) gebruikers toe te staan om bestanden te uploaden:
    $wgGroupPermissions['autoconfirmed']['upload'] = true;

Het recht om bestaande bestanden te vervangen wordt als een apart recht gezien, reupload:

  • Om te voorkomen dat normale gebruikers bestaande bestanden overschrijven:
    $wgGroupPermissions['user']['reupload'] = false;
  • Om "autobevestigde" (niet-nieuwe) gebruikers bestaande bestanden te laten vervangen:
    $wgGroupPermissions['autoconfirmed']['reupload'] = true;

Als er een ForeignFileRepo is ingesteld, wordt het recht om die bestanden lokaal te vervangen, reupload-shared genoemd:

  • Om te voorkomen dat normale gebruikers lokaal filerepo-bestanden kunnen overschrijven:
    $wgGroupPermissions['user']['reupload-shared'] = false;
  • Om "autobevestigde" (niet-nieuwe) gebruikers lokaal filerepo-bestanden te laten vervangen:
    $wgGroupPermissions['autoconfirmed']['reupload-shared'] = true;

Zie Manual:User rights voor details over gebruikersrechten, en Manual:Preventing access voor meer informatie over het beperken van toegang.

Bestandstypes configureren

U kunt $wgFileExtensions in LocalSettings.php toevoegen om uploaden van andere gewenste bestandstypen mogelijk te maken. U kunt bijvoorbeeld de regel $wgFileExtensions veranderen in iets als dit

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

of

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

of

# Voeg nieuwe types toe aan de bestaande lijst
$wgFileExtensions[] = 'docx';
$wgFileExtensions[] = 'xls';
$wgFileExtensions[] = 'pdf';
$wgFileExtensions[] = 'mpp';
$wgFileExtensions[] = 'odt';
$wgFileExtensions[] = 'ods';

Bepaalde bestandstypes zijn echter verboden en kunnen niet worden geüpload, zelfs als ze worden toegevoegd aan $wgFileExtensions. Om die bestanden te uploaden, moet u $wgProhibitedFileExtensions wijzigen. Om bijvoorbeeld gebruikers in Windows uitvoerbare programma's te laten uploaden:

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

Bovendien voorkomt $wgMimeTypeExclusions bepaalde bestandstypes op basis van MIME-type; exe-bestanden zijn bijvoorbeeld verboden op basis van MIME-type.

U kunt ook $wgStrictFileExtensions instellen

$wgStrictFileExtensions = false;

om de meeste typen bestanden te laten uploaden. Toch zijn verboden bestandstypes en MIME-types nog steeds niet toegestaan.

Waarschuwing Waarschuwing: Als u $wgStrictFileExtensions op falsezet of $wgProhibitedFileExtensions wijzigt, lopen u en uw gebruikers wat risico met de beveiliging.

Als u de foutmelding "The file is corrupt or has an incorrect extension" krijgt, zorg dan dat de MIME-type detectie goed werkt.

Als u besluit om elk bestandstype toe te staan, zorg er dan voor dat uw mimedetectie werkt en denk na over virusscans inschakelen voor uploads .

Om de extensie zip in te schakelen (getest in MediaWiki v1.19.23) is het volgende nodig in het bestand LocalSettings.php :

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


Miniaturen

Voor informatie over het automatisch renderen/thumbnailen van afbeeldingen, zie Miniatuur van afbeelding . Voor problemen met het maken van miniaturen, zie Miniaturen van afbeeldingen werken niet of worden niet getoond.

MediaWiki-versie:
1.11

Als het bestand niet visueel is (zoals een Afbeelding of Video) wordt er in plaats daarvan een pictogram bestand gebruikt. Deze worden gegenereerd door de iconThumb() () functie in de class File in de FileRepo-groep. Pictogrammen/iconen worden opgeslagen in "$wgStyleDirectory/common/images/icons/" in een formaat "fileicon-$extension.png".

De maximale grootte bij het uploaden van het bestand instellen

Browsers vertellen de server de grootte van het bestand dat moet worden geüpload voordat het het bestand daadwerkelijk wordt verstuurd.

Als de upload te groot is, wordt deze geweigerd door de doelserver en mislukt de upload, waardoor meerdere fouten ontstaan, afhankelijk van op welke laag de limiet is opgelegd:

  • Als het een serverlimiet (nginx, Apache) is op de maximale hoeveelheid overgedragen gegevens, kan het gewoon falen met een HTTP 500 fout of HTTP 413 - Request entity too large.
  • Als de limiet op PHP-niveau is, als post_max_size wordt overschreden, krijgt u mogelijk een algemene HTTP 500-fout (of gewoon een lege pagina) anders zou MediaWiki een meer betekenisvol foutbericht moeten geven.
post_max_size en upload_max_filesize in php.ini

De configuratiecode in php.ini beperkt standaard de omvang van de uploadbare bestanden tot 2 megabytes (en de maximale omvang van een post-operatie tot 8 megabytes). Om grotere bestanden te uploaden, moet u deze parameters in php.ini bewerken:

Hiervoor kan root-toegang tot de server nodig zijn. (Als u op een gedeelde host werkt, neem dan contact op met uw serverbeheerder.)

Als u de maximale upload-bestandsgrootte verhoogt tot een waarde van meer dan 100 MB, moet u $wgMaxUploadSize toevoegen met de nieuwe upload-bestandgrootte waarde naar LocalSettings.php .
Het vinden van het bestand php.ini

De locatie van het bestand php.ini varieert afhankelijk van de distributie die u gebruikt. Zie Handleiding:Php.ini voor instructies voor het vinden van php.ini dat door uw server wordt gebruikt. (in tegenstelling tot de php.ini die wordt gebruikt door het binaire bestand van de opdrachtregel).

Meerdere websites gehost op een server

Als u meer dan één website heeft die op een server wordt gehost en u wilt deze alleen voor MediaWiki wijzigen, voeg dan in uw /etc/apache2/sites-enabled/your_wiki_site.com het volgende toe:

php_value upload_max_filesize 100M
php_value post_max_size 100M

Beide bovenstaande instellingen werken ook in een bestand .htaccess als uw site mod_php gebruikt. Als uw site PHP >= 5.3 gebruikt en dit toestaat, kunt u in plaats daarvan php.ini directives plaatsen in .user.ini bestanden.

webserver limieten

Uw webserver kan verdere limieten opleggen op de omvang van de bestanden die worden geüpload. Voor Apache is een van de relevante instellingen LimitRequestBody. [1] Voor Nginx is client_max_body_size de relevante instelling.[2] Voor Lighttpd is server.max-request-size de instelling die mogelijk gewijzigd moet worden.[3]

Na het wijzigen van uw php.ini of webserver configuratie, moet u Apache of IIS opnieuw starten.

Ubuntu 16.04: sudo service apache2 restart

Het kan ook zijn dat u php5-fpm opnieuw moet opstarten na het wijzigen van de PHP (of nginx server) configuratie.

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

Waarschuwing voor het uploaden van te grote bestanden

MediaWiki geeft zelf een waarschuwing als u bestanden probeert te uploaden die groter zijn dan wat is gespecificeerd met de $wgUploadSizeWarning optie. Dit staat los van de harde limiet die PHP oplegt.

Tijdelijke uploadlimieten

Tijdelijke wijzigingen in uploadlimieten (bijvoorbeeld bij het gebruik van meerdere wiki's op een farm) kunnen worden gewijzigd door regels toe te voegen:

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

aan het MediaWiki LocalSettings.php configuratiebestand voor elke wiki. In dit voorbeeld wordt de PHP-limiet ingesteld op 50 Mb. Merk op dat deze instellingen de hierboven ingestelde maximuminstellingen niet overschrijven (aangezien de core php.ini en apache2 php.ini-bestanden het absolute maximum instellen). Deze methode stelt maxima vast die lager zijn dan het absolute maximum.

IIS7 uploadlimiet
Standaard is IIS7[4] op Windows 2008 kan slechts 30 MB worden geüpload via een webtoepassing. Grotere bestanden geven na het uploaden een fout 404. Als u dit probleem heeft, kunt u het oplossen door de maximale bestandsgrootte te verhogen door de volgende code toe te voegen aan ‎<system.webServer> in het bestand web.config:
<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="50000000" />
  </requestFiltering>
</security>

Met de bovenstaande maxAllowedContentLength kunnen gebruikers bestanden uploaden die 50.000.000 bytes (50 MB) groot zijn. Deze instelling zal onmiddellijk werken zonder dat de IIS-services opnieuw moeten worden gestart. Het bestand web.config bevindt zich in de root map van uw website.

Om het uploaden van bestanden tot 2G toe te staan:

voeg de volgende regels toe aan LocalSettings.php:

$wgUploadSizeWarning = 2147483647;
$wgMaxUploadSize = 2147483647;

wijzig ook de volgende regels in php.ini :

memory_limit = 2048M (deze regel kan overbodig zijn)
post_max_size = 2048M
upload_max_filesize = 2048M

In het bestand IIS web.config wordt de waarde van maxRequestLength overschreven. Bijvoorbeeld, de volgende regel in web.config maakt het mogelijk om bestanden die minder dan of gelijk zijn aan 2 gigabytes (GB) te uploaden:

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

Met IIS 7 moet u het ook instellen om grote uploads toe te staan. Dit kunt u vinden door te klikken op "Aanvraag filteren > functie-instellingen bewerken" in het IIS-gedeelte in het midden van het venster. Stel het veld "Maximum toegestane inhoudslengte (byte)" in op 2147482624. Als u niet de optie voor het filteren van de aanvraag ziet, moet deze worden ingeschakeld via Internet-informatiediensten > World Wide Web-diensten > Beveiliging in het gebied "Schakel Windows-functies aan/uit" in het besturingspaneel.

Als de bovenstaande tip grote uploads niet mogelijk maakt, open dan een commando-prompt en voer dit commando uit:

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

Rechtstreeks uploaden vanaf een URL ("Sideloading")

Als u een gebruiker toestaat om bestanden direct te uploaden vanaf een URL, in plaats van van van een bestand op zijn lokale computer, stel $wgAllowCopyUploads = true in.

Standaard is uploaden via URL alleen mogelijk met de optie API (of met extensies zoals UploadWizard ). Om de optie bruikbaar te maken die vanaf Special:Upload kan worden gebruikt, moet u ook $wgCopyUploadsFromSpecialUpload op true instellen. Op het uploadformulier ziet u dan een extra veld voor de URL, onder het gebruikelijke veld voor de bestandsnaam. Het URL-veld wordt standaard grijs weergegeven, maar kan worden geactiveerd door de radio-knop (checkbox) links van het veld te activeren.

Om deze functie te kunnen gebruiken, moeten gebruikers het gebruikersrecht upload_by_url hebben. Dit recht werd tot MediaWiki 1.20 standaard toegekend aan beheerders, maar moet nu expliciet worden toegekend. Om dit voor normale gebruikers mogelijk te maken,

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

Houd er rekening mee dat het toestaan van rechtstreeks uploaden vanaf een willekeurige locatie op het web het gemakkelijker maakt om willekeurig, ongewenste materiaal te uploaden, en het kan verkeerd worden begrepen als een uitnodiging om alles te uploaden dat mensen op het web tegen komen.

De cURL-ondersteuning van PHP moet worden ingeschakeld om deze functie te kunnen ondersteunen. Configureer uw PHP bij het installeren met behulp van de optie --with-curl
Als uw server internettoegang heeft via een proxy, moet $wgHTTPProxy dienovereenkomstig worden ingesteld. Of u levert het rechtstreeks of, als uw server de omgevingsvariabele http_proxy geeft, zie uw phpinfo(), dan kunt u de volgende code gebruiken in de LocalSettings.php:
/*
 * Proxy om te gebruiken voor CURL-verzoeken.
 */
if ( isset( $_ENV['http_proxy'] )) $wgHTTPProxy = $_ENV['http_proxy'];

Meerdere bestanden uploaden

Er zijn hulpmiddelen beschikbaar om meerdere bestanden tegelijk te uploaden in plaats van elk bestand apart:

Extensie Beschrijving Release status Vereisten
Extension:UploadWizard Gebruikt op Wikimedia Commons Stabiel MediaWiki 1.23+
Extension:MsUpload Staat een gebruiker toe meerdere bestanden te uploaden, ook door het verslepen van bestanden. Stabiel 1.32+
Extension:SimpleBatchUpload Basis, zonder franje, uploaden van meerdere bestanden naar de MediaWiki Stabiel 1.31+
Extension:VisualData/File_upload Includes a fully-configurable multiple file upload with filename formula and CRUD operations Stabiel 1.35+
Commonist (externe link naar Wikimedia Commons) Bestand verplicht uploaden met api.php.
importImages.php "Plaats de bestanden op de server op een leesbare locatie en voer het script maintenance/importImages.php op de commando-regel uit."[5]

Map upload

Bij het uploaden van een bestand worden er verschillende dingen gedaan:

  1. Een artikel in het bestand namespace met de naam van het bestand, bijvoorbeeld File:MyPicture.png. Deze pagina wordt opgeslagen en kan als elke pagina worden bewerkt.
  2. Het bestand zelf wordt opgeslagen in de map in het bestandssysteem, dat is geconfigureerd in $wgUploadDirectory of in een van zijn submappen (zie hieronder).
  3. Als miniaturen maken beschikbaar is, worden er miniatuurversies van het bestand gemaakt wanneer nodig (zoals voor gebruik op de pagina met de bestandsbeschrijving). De miniaturen worden opgeslagen in een map thumb in de map image, een map thumb voor elke originele afbeelding.

Als $wgHashedUploadDirectory is ingeschakeld (standaard), creëert MediaWiki verschillende submappen in de map images.

Als $wgHashedUploadDirectory is ingesteld op true, worden de geüploade bestanden verdeeld in submappen van $wgUploadDirectory op basis van de eerste twee tekens van de md5-hash van de bestandsnaam. (bijvoorbeeld $IP/images/a/ab/foo.jpg) Het aanmaken van dergelijke submappen wordt automatisch gedaan. Dit wordt gedaan om te voorkomen dat te veel bestanden in één map zitten omdat sommige bestandssystemen niet goed werken met een groot aantal bestanden in een map.

Als u maar een kleine wiki met een paar geüploade afbeeldingen heeft, kunt u dit uitschakelen door $wgHashedUploadDirectory = false in te stellen, alle afbeeldingen worden in $wgUploadDirectory zelf geüpload. (bijv. $IP/images/foo.jpg)

Multiwiki sites

  • Zorg ervoor dat u de locatie van de site in LocalSettings.php heeft gewijzigd van bijvoorbeeld /var/lib/mediawiki naar waar de installatie ook is, en dat u een map met schrijfbare afbeeldingen heeft gemaakt (de meeste van de overige kunnen worden gelinkt met een symlink).

Als u dat niet doet, mislukt het uploaden van afbeeldingen op een mysterieuze manier.

Het uploadformulier configureren

Het bericht op het uploadformulier dat bij de standaard MediaWiki-installatie wordt geleverd (dat verschijnt wanneer u op de link "Bestand uploaden" klikt of naar de link Special:Upload gaat) is mogelijk niet zoals u dat wil.

In dat geval kunt u de inhoud van MediaWiki:Uploadtext bewerken en uw eigen tekst gebruiken. Als uw wikisite meertalig is, vergeet dan niet om gelokaliseerde versies zoals MediaWiki:Uploadtext/de te bewerken.

Op de pagina MediaWiki:Licenses kunt u een dropdown lijst met licenties aanpassen voor uploaden van uw site. De documentatie van deze functie

Houd er rekening mee dat gelokaliseerde versies zoals MediaWiki:Licenses/de standaard niet werken. Om deze in te schakelen moet u de variabele $wgForceUIMsgAsContentMsg configureren.

Bewerk MediaWiki:Upload-default-description om een eerste tekst toe te voegen aan het veld "Opschrijving" van het uploadformulier (bijvoorbeeld uw wiki-site heeft een universeel sjabloon voor uploads van samenvattingen en u wilt dat iedereen dat sjabloon gebruikt).

Bekende problemen op Windows

MediaWiki op de Windows-server laten lopen heeft vanwege een PHP-fout enkele beperkingen op de toegestane bestandsnamen. PHP kan niet op het juiste manier omgaan met bestandsnamen met niet-ascii-tekens, en MediaWiki weigert bestanden met dergelijke tekens te uploaden om gebroken uploads te voorkomen (taak T3780), met het bericht Deze wiki ondersteunt geen bestandsnamen met speciale tekens..

MediaWiki kan bestandsnamen met niet-ascii-tekens omgaan als het PHP 7.1 of later gebruikt.

Bekende problemen met databasenamen met niet-alfanumerieke tekens

Als $wgDBname niet-alfanumerieke tekens bevat, kan de upload mislukken met fouten zoals Could not create directory "mwstore://local-backend/local-public/<path>". Dit wordt veroorzaakt door een interne controle op geldige containernaam voor de backend van het bestand, maar het is opgebouwd met $wgDBname.

Sinds MediaWiki 1.26, staat het uploads toe wanneer $wgDBname punten bevat.

Zie ook

Referenties

  1. core - Apache HTTP Server Version 2.4 - LimitRequestBody Directive, Apache handleiding
  2. client_max_body_size, Nginx handleiding
  3. server.max-request-size, Lighthttpd handleiding
  4. IIS7 een nieuwe revisie (versie 7.0) van de Internet Information Services die deel uitmaakt van Windows Vista en de volgende Windows Server-versie.
  5. http://xpt.sourceforge.net/techdocs/language/wiki/wikimedia/wkm07-MediaWikiImport/index.html#mass_image_upload_zip_