Handleiding:Bestandsuploads configureren
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().
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.
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 - enphp_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.
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.
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:
- post_max_size, standaard 8 megabytes
- upload_max_filesize, standaard 2 megabytes
Hiervoor kan root-toegang tot de server nodig zijn. (Als u op een gedeelde host werkt, neem dan contact op met uw serverbeheerder.)
- 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]
Ubuntu 16.04: sudo service apache2 restart
(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
<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.
$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:
- 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.
- Het bestand zelf wordt opgeslagen in de map in het bestandssysteem, dat is geconfigureerd in
$wgUploadDirectory
of in een van zijn submappen (zie hieronder). - 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
- Beveiliging sectie Upload security
- Configuratie instellingen Bestanden en uploads
- Category:Upload variables/nl - een gelijke lijst maar dan via een categorie (op alfabet)
- U ziet een lege pagina bij het proberen een bestand te uploaden
- Ondersteuning voor bestandstypes toevoegen
Referenties
- ↑ core - Apache HTTP Server Version 2.4 - LimitRequestBody Directive, Apache handleiding
- ↑ client_max_body_size, Nginx handleiding
- ↑ server.max-request-size, Lighthttpd handleiding
- ↑ IIS7 een nieuwe revisie (versie 7.0) van de Internet Information Services die deel uitmaakt van Windows Vista en de volgende Windows Server-versie.
- ↑ http://xpt.sourceforge.net/techdocs/language/wiki/wikimedia/wkm07-MediaWikiImport/index.html#mass_image_upload_zip_