Dateigrößen-Limit in WordPress erhöhen

von Sebastian Klammer am Juni 6, 2013

wordpress

Beim Upload von Mediendateien in WordPress stolpert man des Öfteren über das Problem, dass Dateien mit einer Größer von mehr als 8 MByte nicht auf den Server geladen werden können. Dieser Umstand macht auch den Einsatz verschiedener Plugins – etwa von Datei- oder Download Managern – schwierig. So wirklich einfach lässt es sich allerdings nicht beheben, denn WordPress an sich bietet keine entsprechenden Einstellmöglichkeiten. Es gibt aber einen Umweg.

Die PHP.INI

Viele globale Variablen des Web Servers, auf dem WordPress läuft, werden in der php.ini des Servers festgelegt. Diesen Variablen unterliegen alle Anwendungen, die auf dem entsprechenden Server laufen – einschließlich WordPress. Das erklärt, warum die WordPress-eigenen Einstellungen an diesen Variablen nichts ändern. Sofern es sich bei dem Web Server nicht um einen lokalen oder einen dedizierten Server handelt, gibt es außerdem das Problem, dass man an die php.ini nicht heran kommt – demzufolge auch keine Änderungen an ihr vornehmen kann. Dies ist z.B. dann der Fall, wenn man nur einen WebSpace, jedoch keinen eigenen Server, angemietet hat. Dieses Problem zu umgehen, erfordert 4 recht einfache Schritte, die auch von technisch weniger versierten Nutzern durchgeführt werden können. Zunächst muss eine Kopie der php.ini im eigenen Root-Verzeichnis angelegt werden. Dazu muss man die Originaldatei natürlich erst einmal finden, kopieren und entsprechend den eigenen Anforderungen anpassen. Folgendes ist zu tun:

Wichtig: Für alle drei Schritte benötigst du ein FTP-Programm und FTP-Zugriff auf deinen Webspace. Aber von deren Vorhandensein davon gehe ich jetzt einfach mal aus.

Schritt 1: Finden der php.ini auf dem Web Server

Um zu erfahren, wo auf dem Web Server deines Hosters die php.ini zu finden, erstellst du einfach eine neue .php Datei. Speichere sie mit Hilfe deines FTP-Programms z.B. als „findini.php“ im Stammverzeichnis deiner WordPress Installation. Diese Datei enthält nur eine einzige Zeile:

<?php phpinfo(); ?>

Nun rufst Du die neue Datei in deinem Browser auf – z.B. unter http://www.meinedomain.de/findini.php

Auf der nun angezeigten Seite suchst du nach einer Zeile, die in etwa so aussehen sollte:

Loaded Configuration File: /usr/lib/php5/php.ini

Dies ist der Pfad zur originalen php.Datei. Diesen (also alles nach dem Doppelpunkt) kopierst du dir aus dem Browserfenster heraus in deine Zwischenablage.

Schritt 2: Kopieren der php.ini auf deinen Webspace

Im zweiten Schritt erstellst du eine zweite php-Datei. Diese kannst du z.B. als „getini.php“ im Stammverzeichnis deiner WordPress Installation speichern. Auch diese Datei enthält nur eine Zeile, und zwar diese:

<?php system("cp /usr/lib/php5/php.ini /beispielpfad/deiner/domain/htdocs/php.ini"); ?>

Der erste Teil der Zeile beschreibt den Pfad zur originalen php.ini. Diesen hast du ja auf der mit findini.php geladenen Seite herausgefunden. Der zweite Teil der Zeile bezeichnet den Pfad, unter dem du deine eigene php.ini speichern möchtest – also den Pfad in das Stammverzeichnis deiner WordPress Installation. Den findest du z.B. in der Admin-Oberfläche deines WebSpace-Anbieters heraus.

Speichere die neue Datei ab, nachdem du sowohl den Quellpfad als auch den Zielpfad korrekt eingetragen hast und rufe die Datei dann in deinem Browser auf – z.B. unter http://www.meinedomain.de/getini.php.

Als Ergebnis erhälst du eine leere Seite. Das ist allerdings nicht weiter tragisch, denn alles was die getini.php tut, ist eine Kopie der php.ini im Stammverzeichnis deiner WordPress Site abzuspeichern. Dort solltest du jetzt demnach eine Datei namens php.ini vorfinden. Falls das nicht der Fall ist, solltest du prüfen, ob die in der getini.php angegebenen Pfade korrekt sind und diese gegebenenfalls ändern.

Im Idealfall solltest du jetzt aber eine php.ini in deinem Stammverzeichnis haben.

Schritt 3: Anpassen der php.ini

Mit deinem FTP-Programm öffnest du jetzt die php.ini auf deinem Webspace. Dazu kannst Du z.B. Notepad auf dem PC oder Smultron auf dem Mac nutzen. In der php.ini sind folgende Zeilen wichtig:

memory_limit = 90M;
upload_max_filesize = 100M;
max_execution_time = 50000;
post_max_size = 100M
file_uploads = On

Die Werte in diesen Zeilen können unterschiedlich sein und du kannst sie an deine Anforderungen anpassen. Dabei würde ich die o.g. Werte als ausreichend empfehlen – nicht übertreiben! Sollten die o.g. Zeilen ganz oder teilweise in deiner php.ini fehlen, kannst du sie einfach nachtragen. Wenn alles erledigt ist, speicherst du die php.ini ab und schließt sie wieder.

GANZ WICHTIG: Wenn du im Normalfall Änderungen an der php.ini vornehmen möchtest, musst du deine eigene Kopie dieser Datei im Stammverzeichnis deiner Domain speichern. Nur hier wird sie vom Webserver gefunden und als Ersatz für die ursprüngliche php.ini geladen. Bei WordPress ist das allerdings etwas anders. Hier muss die php.ini im Verzeichnis wp-admin gespeichert werden, sonst hat sie keinen Effekt. Verschiebe also im letzten Schritt deine eigene, neu angepasste php.ini Datei aus dem Stammverzeichnis nach wp-admin.

Schritt 4: Anpassen der wp-config.php

Nicht in jedem Fall unbedingt notwendig, aber gegebenenfalls sicherer ist es, auch die wp-config.php im Stammverzeichnis deiner WordPress-Installation anzupassen. Diese ergänzt du einfach um die Zeile:

define('WP_MEMORY_LIMIT', '100M');

Ist diese Zeile bereits vorhanden, musst du lediglich den Wert in den Klammern anpassen. Abspeichern, fertig.

Nun kannst du das WordPress Backend neu laden und unter MEDIEN > Neue Datei hochladen überprüfen, ob deine Anpassungen erfolgreich waren. Hier solltest du nun unter der Drop Zone ein neues Dateigrößen-Limit sehen:

upload-limit

Die Anpassungen haben aber auch einen Effekt auf Dateibezogene WordPress Plugins, wie etwa den WP Download Manager. Auch dieser macht normalerweise bei 8 MByte Schluss – lässt sich aber mit Hilfe der o.g. Anpassungen aufbohren.

Übrigens: Wenn du nicht möchtest, dass irgend jemand in deiner eigenen php.ini herumschnüffelt (manche Hoster sehen solche Anpassungen z.B. nicht so gern), kannst du das mit einem Eintrag in deiner .htaccess Datei verhindern. Die .htaccess befindet sich im Stammverzeichnis deiner WordPress Installation, ist allerdings eine versteckte Datei. Solltest du sie also nicht sehen, solltest du prüfen, ob dein FTP-Programm versteckte oder verborgene Dateien anzeigt. In die .htaccess trägst du folgende Zeilen ein:

<Files php.ini>
order allow,deny
deny from all
</Files>

Abspeichern. Fertig! Viel Spaß beim Umsetzen!

Update vom 29.05.2016

Bei 1&1 scheint es hinsichtlich der einstellbaren Speichergrößen Restriktionen zu geben, die vom jeweilig gebuchten Vertrag abhängen. Hier muss man scheinbar etwas mit den Werten experimentieren oder ggf. auf den nächst höheren Vertrag upgraden. Sollte du über eine andere Anpassungsmöglichkeit (ohne Vertragsupgrade) gestolpert sein, kannst du diese gerne als Kommentar posten und andere teilhaben lassen!

Gefällt dir dieser Post? Sag es weiter!
Share on FacebookTweet about this on TwitterShare on Google+Pin on PinterestShare on TumblrShare on LinkedInShare on XingBuffer this pageEmail this to someone

29 Kommentare

DAAAAAAANKE!

Die Anleitung aller Anleitungen! Wenn man sich an alle Schritte hält, klappt endlich der Upload von großen PDF Dateien, die sich wehrhaft allen Shrink-Versuchen auf dem Mac widersetzt haben – UNBEZAHLBAR!

by Alex on 27. Januar 2014 at 11:04. Antworten #

Hallo,
danke für die Anleitung. Ich denke das ich alles soweit richtig habe. Kann es einen anderen Grund geben warum es trotzdem nicht funktionieren will?

Fall:
1. Ich arbeite mit FileZilla
2. Erstellung der php.ini über getini.php
3. Um den 2. Pfad zu erhalten gehe ich in den „wp-admin“
Ordner (rechte Maustaste > kopiere Pfad und gebe ihn
entsprechend geändert in die getini.php ein)
bespw.: „… /31.5.86.105/wp-admin/php.ini“)

dann sollte er mir doch auch eine Datei in diesen Ordner erstellen?
Ich hoffe du kannst mir weiterhelfen :/ habe keine Ideen mehr wie es sonst klappen könnte!?!

by Torsten on 2. April 2014 at 18:56. Antworten #

2. Versuch!!! 🙂

Hallo,
danke für die Anleitung. Ich denke das ich alles soweit richtig habe, kann es einen anderen Grund geben warum es trotzdem nicht funktionieren will?

Fall:
1. Ich arbeite mit FileZilla
2. Erstellung der php.ini über getini.php
3. Um den 2. Pfad zu erhalten gehe ich in den „wp-admin“
Ordner (rechte Maustaste > kopiere Pfad und gebe ihn
entsprechend geändert in die getini.php ein)
bespw.: „… /31.5.86.105/wp-admin/php.ini“)

dann sollte er mir doch auch eine Datei in diesen Ordner erstellen?
Ich hoffe du kannst mir weiterhelfen :/ habe keine Ideen mehr wie es sonst klappen könnte!?!

by Torsten on 2. April 2014 at 18:57. Antworten #

Hallo Torsten,
hast Du den ersten Schritt mit der findini.php erfolgreich ausführen können? Also gab es da ein Ergebnis? Wenn ja, dann musst Du diesen Pfad zur php.ini Deines Hosters in eine neue .php-Datei (z.B. getini.php) in Deinem Stammverzeichnis eintragen. Also nicht in /wp-admin/, sondern den Hauptordner. Probier es dann mal noch mal…8)

by Sebastian Klammer on 8. April 2014 at 19:00. Antworten #

Wer in Punkt 2 nach dem PFad zum speichern der Datei sucht, der kann aus der PHP info (Punkt1) diesen untern dem Eintrag „DOCUMENT_ROOT“ entnehmen.

by endet on 21. April 2014 at 12:57. Antworten #

Zitat:
„Wer in Punkt 2 nach dem PFad zum speichern der Datei sucht, der kann aus der PHP info (Punkt1) diesen untern dem Eintrag “DOCUMENT_ROOT” entnehmen.“

DAS WAR ES! VIELEN DANK FÜR DEN KOMMENTAR!

by Bernd Krüger on 29. August 2014 at 20:18. Antworten #

Danke für das Tutorial,
klappt leider bei mir nicht. Ich bekomme keine copy der php.ini, egal was ich versucht habe. Grundsätzlich wollte ich die Kopie in der root haben. Also müsste doch der 2. Pfad einfach „/php.ini“ lauten, oder?
Ich habe es auch mit anderen Verzeichnissen probiert, aber eine Datei wird nicht erstellt. gibt es nicht einfach die Möglichkeit die PHP.INI anzuzeigen, dann kann ich die Datei manual erstellen?
Eine Idee?

Thanks

by Mario on 29. April 2014 at 16:43. Antworten #

Dieses Tutorial ist großartig! Vielen Dank! Als ich Strato angerufen hab und um Hilfe gebeten, wurde mir gesagt, dass mann diese PHP Werte festgelegt sind und man sie nicht ändern kann.

Anscheinend doch! Vielen Dank nochmal!

by Tatyana on 27. Juni 2014 at 11:17. Antworten #

Habe aber noch eine Frage zu file upload:

ich habe max_execution_time = 50000 gesetzt, und trotzdem bekomme ich beim Upload von großen Dateien (ca. 15 MB) 500 Internal Server Error. Bei Dateien von 2 bis 4 MB funktioniert der Upload. Gibt es vielleicht noch irgendwas zu beachten?

Vielen Dank im Voraus!

by Tatyana on 27. Juni 2014 at 11:23. Antworten #

Hallo All,

also der „HTTP-FEHLER“ zeigt sich bei mir, sobald das Image größer 125kb ist. Bereits 126kb erzeugen den HTTP-FEHLER.

Ich hab die PHP.INI bereits modifiziert und die MAX settings auf 50-100MB erhöht. Das bringt gar nichts. Totaler Schwachsinn (nebenbei bemerkt) – das muss an der WP Config selber liegen, nur wo?

Falls es jemand löst – freu mich drauf! 🙂

by Dirk on 25. August 2014 at 21:06. Antworten #

Besonderheit bei Multisites!

Hier dran denken, dass in der Netzwerkverwaltung unter Netzwerkeinstellungen der Wert für erlaubte Uploads entsprechend gesetzt wird. Sonst wundert man sich – wie ich gerade – dass ich zwar auf 100 MB Upload, wie hier beschrieben, erhöht hatte, aber mir auf untergeordneten Webseite nur 48 MB angezeigt wurden.

Nochmals vielen Dank für dieses Super-Tutorial!!!!

by Bernd Krüger on 29. August 2014 at 20:38. Antworten #

Geniale Anleitung. Habe es selbst als Anfänger geschafft – fast. Habe alles ordnungsgemäß durchgeführt. Habe php.ini in wp-admin kopiert, File sizes geändert. Aber wenn ich WP erneut starte und Dateien uploaden will, zeigt er weiterhin 8MB an.
php.ini sieht so aus:
memory_limit = 90M;
upload_max_filesize = 100M;
max_execution_time = 50000; post_max_size = 100M; file_uploads = On ;
max_input_vars = 5000;
browscap = /usr/lib/browscap.ini;
error_reporting = (E_ALL & ~(E_STRICT|E_NOTICE|E_WARNING|E_DEPRECATED));
url_rewriter.tags = „a=href,area=href,frame=src,form=fakeentry,fieldset=“;
mysql.default_socket = „/tmp/mysqld.sock“
mysqli.default_socket = „/tmp/mysqld.sock“
session.save_path = „/tmp“
sendmail_path = „/usr/sbin/sendmail -t -i“
extension_dir = „/usr/lib/php5.5/extensions“

Wo steckt der Fehler? Wer kann helfen?

by Maxim_2001 on 8. Januar 2015 at 18:47. Antworten #

Vielen Dank für die super Anleitung! Hat alles wunderbar funktioniert. Das neue Theme konnte endlich hochgeladen werden. Weiter so, herzlichen Dank!

Mit besten Grüßen

by Jan on 3. Juni 2015 at 13:32. Antworten #

D a n k e !!!
Über zwei Tage habe ich gesucht, probiert… Nichts, aber auch nichts hat geholfen. Heute Abend wollte ich es nochmals wissen und habe diesen Internetauftritt gefunden. Der Autor hat es auf den Punkt gebracht. Idiotensicher!!!
Nochmals danke und liebe Grüße aus dem Emsland

P. S. Ich bin seit MS-DOS 2.x dabei. Lerne aber jeden Tag etwas Neues.

by Ernst Stradl on 21. Juni 2015 at 21:06. Antworten #

Dankeschön! Ich kann mich auch noch gut an die DOS-Zeiten zurück erinnern!…8)

by Sebastian Klammer on 7. Juli 2015 at 08:45. Antworten #

Tolle Antleitung.
Beim mir kommt leider beim aufrufen der getini.php eune fehlermeldung.

Warning: system() has been disabled for security reasons in /www/htdocs/w00edb46/getini.php on line 1

verwehrt mir der hoster den Zugriff ? Gibt es noch einen anderen Weg/Tipp?

by Ali on 21. Juli 2015 at 11:10. Antworten #

Ja, es sieht so aus, als wäre die Funktion aus Sicherheitsgründen gesperrt. Ich habe mal kurz recherchiert, aber ohne Zugriff auf die php.ini (und an die willst du ja gerade heran) kannst du da wohl nicht viel machen. Du müsstest mal Deinen Hoster ansprechen, vielleicht bringt das was?

by Sebastian Klammer on 25. Juli 2015 at 09:29. Antworten #

Auch von mir vielen Dank für diese tolle Anleitung.
Ich habe alles Schritt für Schritt gemacht und obwohl es laut WordPress keine Änderungen gab (z.B. wird immer noch Maximale Dateigröße für Uploads: 32 MB. angezeigt), werden alle Seiten (auch im Backend) seitdem extrem schnell geladen. Danke dafür!
Ich schlage mich übrigens auch mit Strato rum und habe dieselbe Antwort von deren „Service“ erhalten wie @Tatyana.

by Thorsten on 24. August 2015 at 09:59. Antworten #

Kann es sein, dass der Webhoster auf die originale php.ini Datei einen Schreibschutz gelegt hat?

Selbst, wenn ich den Original- und Zielpfad in die getini.php reinkopiere und http://www.meinedomain.de/getini.php ausführe, erscheint zwar wie im Text beschrieben eine weiße, blanke Seite, aber im definierten Zielordner erscheint die neue php.ini leider nicht.

Was kann ich machen?
Macht es Sinn, direkt eine neue p

by Julius on 21. November 2015 at 13:49. Antworten #

Hallo Julius. Ich könnte mir vorstellen, dass mit den Schreibrechten für den Ordner etwas nicht stimmt, die PHP-Datei also nicht geschrieben werden kann. Die müsstest du ggf. mal prüfen. Falls das in Deinem FTP-Programm geht, rufe die Informationen / Eigenschaften des Ordners auf, in den geschrieben werden soll und prüfe, ob OWNER und GROUP Schreibrechte haben. Etwas anderes fiele mir jetzt auch nicht ein…8/

by Sebastian Klammer on 22. November 2015 at 17:47. Antworten #

Mit ein bisschen Tricksen gehts. Musste bei mir aber erst den Webserver neu starten, damit die Änderung auch tatsächlich wirksam wurde.

by Julia on 6. Januar 2016 at 17:46. Antworten #

… Einfach nur genial! Vielen Dank!

BESTE ANLEITUNG!

by Mirek on 17. Januar 2016 at 20:00. Antworten #

Super, vielen Dank für die Anleitung!
Bei Strato war es mir so möglich, die Werte in der php.ini zu erhöhen. In meinem Fall hat das Verschieben in /wp-admin nicht funktioniert, sondern ich musste sie direkt im Stammverzeichnis lassen.

by aha on 30. Januar 2016 at 14:38. Antworten #

war leider etwas zu voreilig. Ich konnte zwar die Werte erhöhen und sie wurden auch im Backend angezeigt, aber bei größeren Dateien hat es nicht funktioniert, sondern es wurde immer nur ‚HTTP-Fehler‘ angezeigt.

by aha on 31. Januar 2016 at 07:59. Antworten #

Hallo! Hmm, wenn Du in Deinem WordPress Backend unter „Medien“ auf „Datei hinzufügen“ klickst, was steht denn dann dort als Dateigrößenlimit unter der Upload-Box? Hast du das Problem mit jedem Browser?

by Sebastian Klammer on 31. Januar 2016 at 11:39. Antworten #

Vielen Dank für die gute Info.

Bei WEB.de sehen die Pfade so aus:

Ich habe mir das direkt in mein wp-admin reingelegt. Das dauerte allerdings etwas. Keine Ahnung warum, aber Filezilla scheint nicht korrekt zu refreshen.
Insgesamt geht’s meinem System jetzt etwas besser, aber das Theme virtue (pay variante) hat mit dem Revolution slider massive Probleme. Das ist aber eine anderes Thema.
Die php.ini habe ich jetzt jedenfalls 😉

by lore on 20. Februar 2016 at 18:07. Antworten #

Ich komme nicht mehr ins Backend

Fatal error: Out of memory (allocated 34340864) (tried to allocate 262179 bytes) in /homepages/28/d19546106/htdocs/muehle/wp-includes/functions.php on line 434

Habe alle gemacht wie beschrieben. Bin bei 1und1. Dort gibt es abert Restriktionen je nach Vertrag. Wie z.B.

memory_limit = 120M;
upload_max_filesize = 40M;
post_max_size = 8M;

Wenn man mehr will muss man nen hheren vertrag buchen 🙁

by Andre on 29. Mai 2016 at 20:35. Antworten #

Danke dir für den Hinweis! Ich wusste gar nicht, dass 1&1 das in (Vertrags)Stufen regelt. Vielleicht musst du hier mal mit den Werten experimentieren. Ich hoffe, du kommst wieder ins Backend, wenn du die Änderungen zurücknimmst!

by Sebastian Klammer on 29. Mai 2016 at 20:38. Antworten #

[…] man Zugriff auf die Datei php.ini hat, kann man auch folgenden Code […]

by Mögliche Fehlerquellen beim Bildupload in WordPress » perun.net on 12. September 2016 at 14:04. Antworten #

Sag etwas zu diesem Beitrag.

Pflichtfeld.

Required. Wird nicht gezeigt.

Wenn vorhanden.