Manual:Configuring file uploads/de

From MediaWiki.org
Jump to: navigation, search

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.

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).

Der formale Inhalt der Variablen ist ein boolscher Ausdruck. PHP liest jeden String, der nicht den Wert FALSCH hat als WAHR, deshalb führt der oft verwendete Wert ON zum gleichen Ergebnis.

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 $wgEnableUploads wird so gesetzt:

$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 $wgDisableUploads. Der Standard sieht so aus:

$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.

Warning Warning: 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]

post_max_size und upload_max_filesize in der php.ini-Datei

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:

  • post_max_size[1] 8 Megabyte als Standard
  • upload_max_filesize[2] 2 Megabyte als Standard

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]

Typischer Ort, wo die php.ini gefunden werden kann.

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]

Du könntest Apache oder IIS neu starten müssen, nachdem Du Deine PHP- oder Webserver-Konfiguration geändert hast. (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]

Per Standard erlaubt IIS7[6] unter Windows 2008, dass von einer Webanwendung nur 30 MB hochgeladen werden. Größere Dateien geben nach dem Hochladen den Fehler 404 zurück. Wenn Du dieses Problem hast, kannst Du es lösen, indem Du die maximale Dateigröße unter <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.

Die 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.

PHPs cURL-Unterstützung muss aktiviert sein, um diese Funktion zu unterstützen. Konfiguriere Dein PHP bei der Installation mit der --with-curl-Option.
Wenn Dein Server auf das Internet durch einen Proxy zugreift, dann muss $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:

Siehe auch[edit | edit source]

Einzelnachweise[edit | edit source]

  1. post-max-size, PHP Core Manual.
  2. upload-max-filesize, PHP Core Manual.
  3. Für ein Beispiel, wo die php.ini zu finden ist, siehe Where is php.ini located?.
  4. LimitRequestBody, Apache-Manual
  5. client_max_body_size, Nginx-Manual
  6. 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.
  7. http://xpt.sourceforge.net/techdocs/language/wiki/wikimedia/wkm07-MediaWikiImport/index.html#mass_image_upload_zip_
Sprache: English  • Deutsch • Bahasa Indonesia • 日本語 • русский • 中文