Manual:Configuring file uploads/de
MediaWiki unterstützt das Hochladen und das Einbinden von Mediendateien. Diese Seite beschreibt die technischen Aspekte dieses Features. Siehe Manual:Image Administration/de und Help:Images/de für allgemeine Anwendungsinformationen.
Beginnend mit MediaWiki Version 1.1 ist das Hochladen aus Sicherheitsgründen standardmäßig abgeschaltet. Das Hochladen kann mit einer Konfigurationseinstellung angeschaltet werden. Es empfiehlt sich jedoch, zunächst mehrere Voraussetzungen zu überprüfen.
Contents
- 1 Voraussetzungen
- 1.1 Stelle sicher, dass das Hochladen in PHP angeschaltet ist
- 1.2 Prüfungen für Windows- und IIS-Benutzer
- 1.3 Prüfe die Verzeichnissicherheit
- 1.4 Das Hochladen An- und Ausschalten
- 1.5 Hochladerechte
- 1.6 Konfiguration von Dateitypen
- 1.7 Login
- 1.8 Thumbnailing. Das Erstellen von kleinen Vorschaubildern
- 2 Die Maximalgröße für hochzuladene Dateien setzen
- 3 Direkt von einer URL hochladen ("Sideloading")
- 4 Gelöschte Bilder wieder herstellen
- 5 Hochladen großer Mengen von Dateien
- 6 Siehe auch
- 7 Einzelnachweise
Voraussetzungen[edit | edit source]
Stelle sicher, dass das Hochladen in PHP angeschaltet ist[edit | edit source]
Folgendes muss in der php.ini
gesetzt sein (die unter /etc/php/php.ini
, /etc/php4/php.ini
, /etc/php5/cli/php.ini
oder /etc/php5/apache2/php.ini
(openSUSE 11.2), /usr/local/lib/php.ini
oder bei Windows unter C:\Windows\php.ini
zu finden ist):
file_uploads = On
Wenn das nicht gesetzt ist, können PHP-Skripte nicht die Hochladen-Funktion nutzen und das Hochladen wird im MediaWiki nicht funktionieren.
Wenn der open_basedir
-Befehl gesetzt ist, muss er das Zielverzeichnis für das Hochladen in der MediaWiki-Installation ({$IP}/images
) und das upload_tmp_dir
-Verzeichnis (das ist das Standardverzeichnis, wenn nicht anders konfiguriert). Das Hinzufügen der upload_tmp_dir
kann die Meldung Could not find file "/var/tmp/php31aWnF"
vermeiden (worin in diesem Beispiel /var/tmp
die upload_tmp_dir
ist. Lies mehr über das Hochladen von Dateien mit PHP in den File upload basics (englisch) und spezieller unter move_uploaded_file (englisch).
Prüfungen für Windows- und IIS-Benutzer[edit | edit source]
Setze für %SystemRoot%\TEMP die Rechte als Internetgastaccount (IUSR_Rechnername, oder IUSR für IIS 7+): Lesen, Schreiben und Ausführen;
Prüfe die Verzeichnissicherheit[edit | edit source]
Das Hochladeverzeichnis muss so konfiguriert sein, dass es einem Endbenutzer (jemand, der sich das Wiki mit einem Browser ansieht) nicht möglich ist, andere Skripte hochzuladen und auszuführen, weil das sonst einen Exploit-Zugang zu Deinem Webverzeichnis ermöglichen könnte und das Wiki oder die Webseite zerstört werden könnten.
Setze das /images
-Verzeichnis (oder das /uploads
-Verzeichnis in früheren Versionen) auf die Berechtigung 755
:
- User kann lesen, schreiben und ausführen;
- Group kann lesen und ausführen;
- World kann lesen und ausführen.
Wenn Du safe_mode
verwendest, stelle sicher, dass das Verzeichnis dem Benutzer gehört, der das PHP-Skript laufen lässt (das ist der Apache-Benutzer oder, bei suphp, der Skriptbesitzer).
Wenn Du SELinux verwendest, stelle sicher, dass die ACLs entsprechend eingestellt sind (siehe dort).
Wenn Du suphp verwendest, stelle sicher, dass umask
in der /etc/suphp.conf
auf 0022
(oder weniger) gesetzt ist.
Beschränke die Anzeige von Verzeichnissen im Bilderverzeichnis[edit | edit source]
Wenn Du nicht allen Benutzern ermöglichen willst, Dein Bilderverzeichnis einzusehen, könntest Du das in Deiner Apachekonfiguration verhindern:
<Directory /var/www/wiki/images> Options -Indexes </Directory>
Das Hochladen An- und Ausschalten[edit | edit source]
MediaWiki version: | ≥ 1.5 |
In MediaWiki Version 1.5 und später steht das zu setzenden Attribut in der LocalSettings.php
und
wird so gesetzt:$wgEnableUploads
$wgEnableUploads = true; # Enable uploads
Das ermöglicht das Hochladen. Um das Hochladen zu unterbinden, muss man das Attribut auf FALSE setzen:
$wgEnableUploads = false; # Disable uploads
MediaWiki version: | ≤ 1.4 |
In älteren Versionen der Software steht das zu setzende Attribut auch in der LocalSettings.php
, wird aber andersherum verwendet, mittels
. Der Standard sieht so aus:$wgDisableUploads
$wgDisableUploads = true; # Disable uploads
Den Wert umkehren, um das Hochladen zu ermöglichen:
$wgDisableUploads = false; # Enable uploads
Hochladerechte[edit | edit source]
Per Standard können alle registrierten Benutzer Dateien hochladen. Um das einzuschränken, musst Du die $wgGroupPermissions
ändern:
- Um normale Benutzer am Hochladen zu hindern:
$wgGroupPermissions['user']['upload'] = false;
- Um eine spezielle Gruppe namens "uploadaccess" anzulegen und den Mitglieder der Gruppe das Hochladen von Dateien zu erlauben:
$wgGroupPermissions['uploadaccess']['upload'] = true;
- Um automatisch bestätigten ("autoconfirmed") Benutzern ("non-newbie") zu erlauben, Dateien hochzuladen:
$wgGroupPermissions['autoconfirmed']['upload'] = true;
Das Recht, bestehende Dateien zu ersetzen wird mit einer anderen Berechtigung gesteuert, genannt reupload
:
- Um normalen Benutzern zu verwehren, bestehende Dateien zu überschreiben:
$wgGroupPermissions['user']['reupload'] = false;
- Um automatisch bestätigten ("autoconfirmed") Benutzern ("non-newbie") zu erlauben, bestehende Dateien zu überschreiben:
$wgGroupPermissions['autoconfirmed']['reupload'] = true;
Wenn ein ForeignFileRepo gesetzt ist, wird das Recht, diese Dateien lokal zu ersetzen mit einer speziellen Berechtigung gesteuert, genannt reupload-shared
:
- Um normalen Benutzern zu verwehren, filerepo-Dateien lokal zu überschreiben:
$wgGroupPermissions['user']['reupload-shared'] = false;
- Um automatisch bestätigten ("autoconfirmed") Benutzern ("non-newbie") zu erlauben, filerepo-Dateien lokal zu überschreiben:
$wgGroupPermissions['autoconfirmed']['reupload-shared'] = true;
Siehe Manual:User rights für Details zu den Benutzerrechten und Manual:Preventing access für mehr Informationen zum Beschränken von Zugängen.
Konfiguration von Dateitypen[edit | edit source]
Du kannst $wgFileExtensions
in der LocalSettings.php
hinzufügen, um das Hochladen von anderen Dateitypen zu erlauben. Beispielsweise kannst Du die $wgFileExtensions
-Zeile so ändern
$wgFileExtensions = array('png','gif','jpg','jpeg','doc','xls','mpp','pdf','ppt','tiff','bmp','docx', 'xlsx', 'pptx','ps','odt','ods','odp','odg');
oder
$wgFileExtensions = array_merge($wgFileExtensions, array('doc', 'xls', 'mpp', 'pdf','ppt','xlsx','jpg','tiff','odt','odg','ods','odp'));
oder
# Add new types to the existing list from DefaultSettings.php $wgFileExtensions[] = 'doc'; $wgFileExtensions[] = 'xls'; $wgFileExtensions[] = 'pdf'; $wgFileExtensions[] = 'mpp'; $wgFileExtensions[] = 'odt'; $wgFileExtensions[] = 'ods';
Mehrere Dateitypen stehen jedoch auf einer Schwarzen Liste ($wgFileBlacklist) und können auch nicht hochgeladen werden, wenn sie $wgFileExtensions
hinzugefügt wurden. Um Dateien mit gesperrten Endungen hochladen zu können, musst Du die Schwarze Liste bearbeiten. Um beispielsweise ausführbare Dateien hochladen zu lassen:
$wgFileExtensions[] = 'exe'; $wgFileBlacklist = array_diff( $wgFileBlacklist, array ('exe') );
Zusätzlich sperrt $wgMimeTypeBlacklist
mehrere Dateien an Hand des MIME-Typ; .zip-Dateien zum Beispiel sind verboten basierend auf dem MIME-Typ (seit MediaWiki Version 1.14).
Du kannst außerdem $wgStrictFileExtensions
verändern
$wgStrictFileExtensions = false;
Das erlaubt, die meisten Dateitypen hochzuladen. An Hand der Schwarzen Liste und des MIME-Typs gesperrte Dateitypen können dann aber immer noch nicht hochgeladen werden.
![]() |
Wenn Du $wgStrictFileExtensions auf false setzt oder $wgFileBlacklist veränderst, könnte das Dich oder Deine Benutzer Sicherheitsrisiken aussetzen. |
Wenn Sie den Fehler "The file is corrupt or has an incorrect extension" erhalten, stellen Sie sicher, dass die MIME-Typ-Erkennung korrekt funktioniert.
Wenn Du jeden Dateityp zulässt, stelle sicher, dass Deine MIME-Typ-Erkennung funktioniert und denke darüber nach, Virusscans für hochgeladene Dateien zu ermöglichen.
Login[edit | edit source]
Per Standard können nicht angemeldete Benutzer keine Dateien hochladen. Sie müssen sich registrieren und anmelden, bevor die Dateihochladeoption im Menü erscheint
Thumbnailing. Das Erstellen von kleinen Vorschaubildern[edit | edit source]
Für Informationen zum automatischen Erstellen von Vorschaubildern siehe Manual:Image_thumbnailing. Bei Problemen mit dem Thumbnailing siehe Image Thumbnails not working and/or appearing.
MediaWiki version: | ≥ 1.11 |
Wenn die Datei nicht visuell ist (also keine Bilder oder Videos), wird an Stelle der Datei ein Icon angezeigt. Diese werden mit der iconThumb()
-Funktion in der Dateiklasse in der FileRepo-Gruppe erzeugt. Die Icons werden in $wgStyleDirectory/common/images/icons/
im fileicon-$extension.png
-Format gespeichert.
Die Maximalgröße für hochzuladene Dateien setzen[edit | edit source]
Per Standard erlaubt PHP das Hochladen von Dateien mit nicht mehr als 2 Megabyte Größe. Wenn Du größere Dateien hochladen willst, ändere zwei Parameter in der php.ini
:
Das kann Root-Zugriff auf den Server voraussetzen. (Wenn Du einen Shared Host hast, kontaktiere Deinen Serveradministrator.)
Die php.ini
-Datei finden[edit | edit source]
Der Ort der php.ini
variiert je nach verwendeter Distribution. (Versuche locate php.ini
oder php -i
um den Ort Deiner Konfigurationsdatei zu finden.)[3]
Es ist wichtig, die php.ini
-Datei im apache2-Verzeichnis zu ändern. Es kann zum Beispiel eine Basis-php.ini
unter /etc/php5/cli/php.ini
und zusätzlich eine unter /etc/php5/apache2/php.ini
geben. Es ist die php.ini
-Datei unter /etc/php5/apache2
, die vorrangig geändert werden muss.
Mehrere Webseiten auf einem Server[edit | edit source]
Wenn Du mehr als eine Webseite auf einem Server hast und Du Änderungen nur für MediaWiki vornehmen willst, füge in Deine /etc/apache2/sites-enabled/your_wiki_site.com
in Deine <Virtual Host>
ein:
php_value upload_max_filesize 20M php_value post_max_size 20M
Beide obigen Einstellungen funktionieren auch in einer .htaccess
-Datei.
Webserver-Grenzen[edit | edit source]
Dein Webserver kann weitere Grenzen für hochzuladene Dateien verhängt haben. Für Apache ist eine der relevanten Einstellungen LimitRequestBody
.[4] Für Nginx ist client_max_body_size
eine relevante Einstellung.[5]
sudo /etc/init.d/apache2 restart
unter Linux, zum Beispiel.)Die Warnung beim Hochladen zu großer Dateien[edit | edit source]
MediaWiki selbst gibt eine Warnung aus, wenn Du versuchst, Dateien größer als spezifiziert durch die $wgUploadSizeWarning
-Option hochzuladen. Das ist unabhängig von der hart durch PHP gesetzten Grenze. MediaWiki hat zudem eine $wgMaxUploadSize
-Option, aber das wird derzeit für normales Hochladen (lokales Hochladen einer Datei) nicht erzwungen. Der einzige Weg für eine Begrenzung der Hochladegröße ist die Änderung der PHP-Konfiguration.
Temporäre Hochladebegrenzungen[edit | edit source]
Zeitweise Änderungen der Hochladebegrenzung (bei multiplen Wikis in einer Farm zum Beispiel) können durch das Hinzufügen dieser Zeilen:
ini_set( 'post_max_size', '50M' ); ini_set( 'upload_max_filesize', '50M' );
in der MediaWiki-LocalSettings.php
-Datei für jedes Wiki gesetzt werden. In diesem Beispiel steht das PHP-Limit bei 50 Megabyte. Beachte, dass diese Einstellungen nicht die oben gesetzte Maximalgröße überschreiben werden (, weil die Basis-php.ini
und die apache2-php.ini
das absolute Maximum setzen). Diese Methode setzt Maxima, die kleiner sind als das absolute Maximum.
IIS7-Hochladebegrenzung[edit | edit source]
<system.webServer>
in der web.config
-Datei setzt:
<security> <requestFiltering> <requestLimits maxAllowedContentLength=”50000000″ /> </requestFiltering> </security>
Mit der obigen maxAllowedContentLength
können Benutzer Dateien hochladen, die 50.000.000 Bytes (50 MB) groß sind. Diese Einstellung wird sofort funktionieren, ohne dass Du die IIS-Dienste neu starten musst.
web.config
-Datei befindet sich im root-Verzeichnis Deiner Webseite.Dateien größer als 2 GB hochladen[edit | edit source]
Füge folgende Zeile der LocalSettings.ini
hinzu:
$wgUploadSizeWarning = 2147483648; $wgMaxUploadSize = 2147483648;
Ändere außerdem folgende Zeilen in der PHP.INI
:
memory_limit = 2048M (this line may not be necessary) post_max_size = 2048M upload_max_filesize = 2048M
In der IIS-web.config
-Datei überschreibe den Wert von maxRequestLength
. Der folgende Eintrag in der web.config
erlaubt beispielsweise, Dateien kleiner oder gleich 2 Gigabytes (GB) hochzuladen:
<httpRuntime maxRequestLength="2097151" executionTimeout="18000"/>
Im IIS 7 musst Du außerdem das Hochladen von großen Dateien erlauben. Du findest das, wenn Du auf “Request Filtering > Edit Feature Settings” im IIS-Abschnitt in der Mitte des Fensters klickst. Sette das ”Maximum allowed content length (Bytes)”-Feld auf 2147482624. Wenn Die "Request Filtering" im IIS-Abschnitt nicht findest, muss es unter “Internet Information Services > World Wide Web Services > Security” im “Turn Windows features on or off”-Feld in den Systemeinstellungen angeschaltet werden.
Wenn obiger Tip nicht das Hochladen großer Dateien ermöglicht, dann öffne eine Kommandozeile und gib dieses Kommando ein:
%windir%\system32\inetsrv\appcmd set config -section:requestFiltering -requestLimits.maxAllowedContentLength: 2147482624
Direkt von einer URL hochladen ("Sideloading")[edit | edit source]
Wenn Du erlauben willst, dass Dateien von einer URL hochgeladen werden, anstatt vom lokalen Computer, dann setze $wgAllowCopyUploads = true
. Im Hochladeformular erscheint dann ein neues Feld für die URL unter dem üblichen Dateinamenfeld. Das URL-Feld ist per Standard ausgegraut, kann aber aktiviert werden, indem man den Radiobutton links vom Feld anklickt.
Um diese Funktion nutzen zu können, müssen Benutzer das Benutzerrecht upload_by_url
haben, das normalerweise nur Sysops haben. Um das normalen Benutzern zu erlauben, setze $wgGroupPermissions['user']['upload_by_url'] = true
. Beachte, dass das Erlauben des Hochladens von Dateien von anderen Webseiten es einfacher macht, zufälliges, unerwünschtes Material hochzuladen und es kann als EInladung missverstanden werden, alles Hochzuladen, was die Leute im Netz so finden.
--with-curl
-Option.$wgHTTPProxy
entsprechend gesetzt sein. Entweder Du stellst es selbst bereit oder, wenn Dein Server die Umgebungsvariable http_proxy
liefert (siehe phpinfo()
), dann kannst Du diesen Code in Deiner LocalSettings.php
verwenden:
/* * Proxy to use for CURL requests. */ if ( isset( $_ENV['http_proxy'] )) $wgHTTPProxy = $_ENV['http_proxy'];
Gelöschte Bilder wieder herstellen[edit | edit source]
Das Wiederherstellen von Bildern ist seit MediaWiki 1.8 möglich und per Standard aktiviert seit MediaWiki 1.11.
Vor MediaWiki 1.11 kannst Du das Wiederherstellen von Bildern mit der Einstellung $wgSaveDeletedFiles = true
setzen. Seit Version 1.11 wird das Verhalten durch $wgFileStore
kontrolliert und gelöschte Dateien werden per Standard unter $wgUploadDirectory/deleted
gespeichert. Seit Version 1.17 ist $wgFileStore
veraltet und $wgDeletedDirectory
sollte statt dessen verwendet werden.
Hochladen großer Mengen von Dateien[edit | edit source]
Es gibt einige Tools für das Hochladen mehrerer Dateien auf einmal:
- Extension:MultiUpload
- Extension:SpecialUploadLocal (funktioniert bis Version 1.16). Setzt FTP-Zugriff voraus.
- Extension:SpecialMultiUploadViaZip
- Commonist (Externer Link nach Wiki Commons). Setzt das Dateihochladen via
API.PHP
voraus. - mit Python:
- meta:Uploadmultiple.py
- meta:imageharvest.py kopiert mehrere Bilder in ein Wiki von einer angegebenen URL.
- meta:imagetransfer.py kopiert Bilder in ein anderes Wiki
- importImages.php "Speichere die Dateien auf einem Server in einem lesbaren Verzeichnis und führe das
maintenance/importImages.php
-Skript in der Kommandozeile aus."[7] - User:Nichalp/Upload script
- Commons:File upload service/Script, veraltet.
- User:File_Upload_Bot_(Kernigh)
Siehe auch[edit | edit source]
- Manual:Configuration settings#Uploads für eine Liste aller Konfigurationsvariablen, die mit dem Hochladen zu tun haben
- Category:Upload variables - ähnliche Liste als Kategorie (alphabetisch sortiert)
- Du siehst eine leere Seite wenn Du versuchst, eine Datei hochzuladen
Einzelnachweise[edit | edit source]
- ↑ post-max-size, PHP Core Manual.
- ↑ upload-max-filesize, PHP Core Manual.
- ↑ Für ein Beispiel, wo die
php.ini
zu finden ist, siehe Where is php.ini located?. - ↑ LimitRequestBody, Apache-Manual
- ↑ client_max_body_size, Nginx-Manual
- ↑ IIS7 ist eine neue Revision (Version 7.0) der Internet Information Services, die Teil von Windows Vista und der nächsten Windows Server-Version sind.
- ↑ http://xpt.sourceforge.net/techdocs/language/wiki/wikimedia/wkm07-MediaWikiImport/index.html#mass_image_upload_zip_
Sprache: | English • Deutsch • Bahasa Indonesia • 日本語 • русский • 中文 |
---|