WordPress Upload-Limit erhöhen: Größere Dateien hochladen
Kurz gesagt
Das Upload-Limit steht in PHP und nicht in WordPress: upload_max_filesize begrenzt die einzelne Datei, post_max_size die ganze Anfrage, und beide setzt du in php.ini, .user.ini oder (nur bei mod_php) .htaccess. Die wp-config.php und ini_set helfen nicht, weil PHP diese Werte vor dem Start deines Codes braucht. Bei Nginx kommt client_max_body_size dazu, bei Multisite die Netzwerkeinstellung.
Du willst ein größeres Bild, ein Theme oder ein Video hochladen und WordPress bremst dich aus: „Die hochgeladene Datei überschreitet die Anweisung upload_max_filesize in der php.ini.” Das Limit ist serverseitig gesetzt und in den meisten Fällen schnell erhöht. Wichtig ist nur, an der richtigen Stelle zu drehen, denn es gibt mehrere Schichten, die einen Upload bremsen können.
Warum kommt die Meldung überhaupt?
Die Meldung stammt direkt von PHP. Im PHP-Handbuch steht sie als Fehlercode UPLOAD_ERR_INI_SIZE: Die Datei ist größer als upload_max_filesize. WordPress zeigt sie dir nur an. Dahinter stehen drei Werte, die zusammenspielen:
upload_max_filesize: die maximale Größe einer einzelnen Datei. Der PHP-Standard liegt laut Handbuch bei 2 MB, die meisten Hoster setzen mehr.post_max_size: die maximale Größe der gesamten Anfrage, Standard 8 MB. Laut Handbuch muss dieser Wert größer sein alsupload_max_filesize. Überschreitet die Anfrage ihn, sind$_POSTund$_FILESleer. WordPress sieht dann keine Datei, und du bekommst unter Umständen gar keine saubere Fehlermeldung.memory_limit: Laut Handbuch sollte er größer sein alspost_max_size. Die Reihenfolge lautet alsomemory_limit>post_max_size>upload_max_filesize.
WordPress selbst zeigt dir als Limit den kleineren der beiden Werte upload_max_filesize und post_max_size an. Die Funktion wp_max_upload_size() rechnet genau so. Setzt du nur einen der beiden hoch, passiert sichtbar nichts.
Wo steht dein aktuelles Limit?
In WordPress siehst du es unter Medien → Datei hinzufügen („Maximale Upload-Dateigröße”) und im Detail unter Werkzeuge → Website-Zustand → Bericht → Server. Dort stehen upload_max_filesize und post_max_size einzeln. Weicht der angezeigte Wert von dem ab, den du eingestellt hast, hat irgendwo eine andere Schicht Vorrang. Dazu unten mehr.
Das Limit erhöhen
Welche Datei funktioniert, hängt vom Hosting ab. Geh sie von oben nach unten durch. Wert wählen, passendes Snippet kopieren:
PHP-Limits-Generator
PHP-Limit setzen
Limit wählen, passende Datei kopieren. Alles läuft in deinem Browser.
Deine Eingaben verlassen den Browser nicht. Die Snippets werden lokal per JavaScript erzeugt.
Auch als eigenständige Seite mit allen Anleitungen: PHP-Limits-Generator.
Hoster-Panel
Viele Hoster haben im Kundenmenü einen PHP-Bereich mit Reglern für upload_max_filesize und post_max_size. Das ist der einfachste Weg und der, der am wenigsten kaputtgehen kann. Findest du dort die Werte, nutze sie, bevor du Dateien anfasst.
php.ini
Auf einem eigenen Server oder VPS änderst du die php.ini und lädst danach PHP-FPM bzw. den Webserver neu. Beide Direktiven haben laut Handbuch den Modus PHP_INI_PERDIR, lassen sich also in der php.ini setzen.
upload_max_filesize = 128M
post_max_size = 136M
memory_limit = 256M
.user.ini
Bei PHP-FPM, FastCGI und CGI legst du eine Datei .user.ini ins WordPress-Hauptverzeichnis. Das Handbuch nennt dafür ausdrücklich die CGI/FastCGI-SAPI. Die Syntax ist KEY=VALUE, kein php_value.
upload_max_filesize = 128M
post_max_size = 136M
PHP liest .user.ini nicht bei jedem Request neu, sondern gemäß user_ini.cache_ttl. Der Standard sind 300 Sekunden. Das erklärt, warum eine Änderung manchmal bis zu fünf Minuten braucht. Wer sofort nachsehen will und Hoster-Zugriff hat, kann auch den PHP-Dienst neu laden.
.htaccess
Die Zeilen php_value upload_max_filesize und php_value post_max_size in der .htaccess funktionieren laut Handbuch nur, wenn PHP als Apache-Modul (mod_php) läuft. Bei FPM oder FastCGI führt php_value dagegen oft zu einem 500er. Dann gehört die Einstellung in die .user.ini.
php_value upload_max_filesize 128M
php_value post_max_size 136M
Warum die wp-config.php nicht hilft
Anders als das Memory Limit gibt es keine WordPress-Konstante für die Upload-Größe. Auch ini_set() im Code, etwa in der wp-config.php oder einem Plugin, hilft nicht: upload_max_filesize und post_max_size haben den Modus PHP_INI_PERDIR, und solche Werte lassen sich laut Handbuch nicht zur Laufzeit mit ini_set() ändern. Der Grund ist einfach: PHP muss die Datei schon beim Einlesen der Anfrage annehmen oder abweisen, bevor dein Code läuft.
Der Webserver kann früher stoppen: Nginx und 413
Läuft deine Seite auf Nginx, gibt es ein zweites Limit, das mit PHP nichts zu tun hat. client_max_body_size begrenzt die Größe des Request-Bodys, der Standard liegt laut Nginx-Dokumentation bei 1 MB. Wird er überschritten, antwortet Nginx mit 413 Request Entity Too Large, und PHP bekommt von dem Upload nichts mit. Deshalb hilft dann auch ein perfektes upload_max_filesize nicht.
server {
client_max_body_size 128M;
}
Der Wert darf im http-, server- oder location-Block stehen. Setzt du ihn auf 0, schaltet Nginx die Prüfung ab, das würde ich bei einer öffentlichen Seite nicht tun. Danach Konfiguration testen und neu laden. Auf Managed Hosting kannst du das meist nicht selbst, dann ist es ein Fall für den Support.
Dauer: max_execution_time und max_input_time
Große Dateien brauchen Zeit, auch wenn die Größenlimits stimmen. Zwei Direktiven sind relevant:
max_input_timebegrenzt laut Handbuch, wie lange PHP Eingabedaten wie POST einlesen darf. Standard ist-1, dann giltmax_execution_time. Auf einer langsamen Verbindung kann ein großer Upload daran scheitern.max_execution_timeist die Laufzeit des Skripts, Standard 30 Sekunden. Sie wird relevant, wenn WordPress nach dem Upload Bildgrößen erzeugt. Details zu dem Fehler findest du im Artikel zu Maximum execution time exceeded.
Multisite: die Netzwerkeinstellung
In einem Multisite-Netzwerk gibt es unter Netzwerkverwaltung → Einstellungen das Feld „Max upload file size”. Laut WordPress-Dokumentation liegt der Standard bei 1500 KB. Im WordPress-Code nimmt der Filter upload_size_limit_filter den kleineren Wert aus PHP-Limit und dieser Einstellung, und zusätzlich den freien Speicherplatz der Site, solange die Speicherplatzprüfung aktiv ist. Wer PHP erhöht hat und trotzdem ein kleines Limit sieht, schaut also zuerst hierhin.
Per Code begrenzen: der Filter upload_size_limit
Mit dem Filter upload_size_limit kannst du das Limit, das WordPress anzeigt und prüft, verändern. Er bekommt die berechnete Größe sowie die beiden PHP-Werte in Bytes. Praktisch ist er zum Senken, zum Beispiel für Redakteure:
add_filter( 'upload_size_limit', function ( $size ) {
if ( ! current_user_can( 'manage_options' ) ) {
return 10 * MB_IN_BYTES;
}
return $size;
}, 20 );
Anheben kannst du damit das PHP-Limit nicht. Der Filter ändert die Anzeige in WordPress, aber PHP lehnt zu große Dateien trotzdem ab.
Typische Fehlerbilder
- „Die hochgeladene Datei überschreitet die Anweisung upload_max_filesize in der php.ini”: Die einzelne Datei ist größer als
upload_max_filesize. Wert erhöhen. - Upload bricht ab oder die Datei taucht nicht auf, obwohl
upload_max_filesizehoch genug ist: Prüfepost_max_size. Ist es kleiner, kommt die Datei nicht an. - 413 Request Entity Too Large: Der Webserver, meist Nginx, hat die Anfrage abgewiesen.
client_max_body_sizeerhöhen. - Wert ändert sich nicht: Hoster-Limit,
.user.ini-Cache, falsche Datei für deine PHP-Variante oder Multisite-Einstellung. - Upload klappt, aber Bild fehlt oder Vorschauen fehlen: Meist die Bildverarbeitung, also Memory Limit oder Laufzeit.
Große Bilder: Memory Limit und die 2560-Pixel-Grenze
Bei großen Uploads, besonders Bildern, kommt nach dem Upload die Verarbeitung. WordPress erzeugt mehrere Vorschaugrößen, und das braucht Arbeitsspeicher. Ein großzügiges Upload-Limit nützt wenig, wenn die Bildverarbeitung danach am Memory Limit scheitert.
Seit WordPress 5.3 skaliert WordPress sehr große Bilder außerdem automatisch herunter. Laut Entwicklerdokumentation gilt der Filter big_image_size_threshold mit einem Standard von 2560 Pixeln, als maximale Breite und Höhe. Das Original bleibt erhalten, WordPress arbeitet aber mit der skalierten Version weiter. Ein Foto mit 6000 Pixeln Breite bekommt dadurch eine verkleinerte Arbeitskopie, und das spart Speicherplatz und Auslieferungsgewicht. Das Upload-Limit betrifft aber weiterhin die Originaldatei. Wer die Skalierung ausschalten will, gibt false zurück:
add_filter( 'big_image_size_threshold', '__return_false' );
Das würde ich nur tun, wenn du die Originale wirklich in voller Auflösung ausliefern musst. Laut der Dokumentation sind PNG-Dateien von dieser Skalierung ausgenommen.
Sehr große Dateien: SFTP und WP-CLI
Wenn du regelmäßig Dateien jenseits von ein paar hundert Megabyte brauchst, ist der Browser-Upload die falsche Methode. Besser: Datei per SFTP auf den Server legen und mit WP-CLI in die Mediathek importieren. wp media import erzeugt laut WP-CLI-Dokumentation Anhänge aus lokalen Dateien oder URLs und versteht auch Glob-Muster.
wp media import /pfad/zu/bildern/*.jpg --porcelain
Der Import läuft über die Kommandozeile und unterliegt nicht den Upload-Limits des Browsers. Für Videos nutzen viele ohnehin einen externen Dienst, statt sie in der Mediathek zu halten.
In welcher Reihenfolge du prüfst
Wenn der Upload scheitert, gehe ich so vor:
- Meldung lesen. Steht dort
upload_max_filesize, ist es die Einzeldatei. Kommt ein 413, ist es der Webserver. - Im Website-Zustand die angezeigten Werte ansehen und mit dem vergleichen, was du eingestellt hast.
post_max_sizemindestens so groß wieupload_max_filesizesetzen,memory_limitdarüber.- Bei
.user.inifünf Minuten warten oder PHP neu laden, dann erneut prüfen. - Bei Multisite die Netzwerkeinstellung ansehen.
- Erst wenn alles stimmt und der Wert trotzdem nicht ankommt, beim Hoster nach einem festen Limit fragen.
Greift es nicht?
Dann hat dein Hoster ein hartes Limit gesetzt, das niedriger liegt und Vorrang hat. Frag nach dem maximal erlaubten Wert. Bei vielen Shared-Hosting-Tarifen ist bei 64 oder 128 MB Schluss. Weitere Fehlerbilder ordnest du über den Überblick zu WordPress-Fehlern ein.
Klappt der Upload trotz Anpassung nicht oder willst du nicht selbst an den Server-Dateien: Schreib uns kurz – wir richten das passende Limit ein.
Häufige Fragen
Wie erhöhe ich das Upload-Limit in WordPress?
Über eine PHP-Konfigurationsdatei: php.ini, wenn du den Server kontrollierst, .htaccess bei Apache mit mod_php, oder .user.ini bei PHP-FPM und FastCGI. Dort setzt du upload_max_filesize und post_max_size auf höhere Werte. In der wp-config.php lässt sich die Upload-Größe nicht setzen. Der Generator auf dieser Seite erzeugt das passende Snippet.
Warum ist post_max_size wichtig?
upload_max_filesize begrenzt die einzelne Datei, post_max_size die gesamte Anfrage. Laut PHP-Handbuch muss post_max_size größer sein als upload_max_filesize. Wird post_max_size überschritten, sind $_POST und $_FILES leer, die Datei kommt also gar nicht erst bei WordPress an.
Wo sehe ich das aktuelle Upload-Limit?
Unter Medien, Datei hinzufügen steht die maximale Upload-Dateigröße. Genauer zeigt es Werkzeuge, Website-Zustand, Bericht, Server mit upload_max_filesize und post_max_size. Dort prüfst du nach einer Änderung auch, ob der neue Wert übernommen wurde.
Warum ändert sich das Limit nach dem Speichern nicht sofort?
Bei einer .user.ini liest PHP die Datei nur alle user_ini.cache_ttl Sekunden neu ein, Standard sind 300, also fünf Minuten. Bei PHP-FPM auf dem Server oder im Hoster-Panel ist oft ein Neustart oder Neuladen von PHP nötig. Warte kurz und prüfe den Wert danach im Website-Zustand.
Was bedeutet 413 Request Entity Too Large beim Upload?
Der Webserver hat die Anfrage abgelehnt, bevor PHP sie gesehen hat. Bei Nginx liegt das an client_max_body_size, Standard ist 1 MB. Erhöhe den Wert im Nginx-Block der Seite und lade die Konfiguration neu. Die PHP-Werte allein reichen dann nicht.
Warum zeigt mein Multisite-Netzwerk ein kleineres Limit als PHP erlaubt?
In den Netzwerkeinstellungen gibt es die Option Max upload file size. WordPress nimmt den kleineren Wert aus PHP-Limit und Netzwerkeinstellung. Laut Dokumentation liegt der Standard bei 1500 KB. Ändere ihn unter Netzwerkverwaltung, Einstellungen.
Wie lade ich Dateien hoch, die größer sind als jedes Limit?
Lege die Datei per SFTP auf den Server und importiere sie mit WP-CLI: wp media import. Das umgeht die Upload-Limits des Browser-Uploads. Videos liegen ohnehin oft besser bei einem externen Video-Dienst.
Passende Leistungen
Gründer & Full-Stack-Entwickler
20+ Jahre Erfahrung in der Webentwicklung. Spezialisiert auf Laravel, WordPress und individuelle Software für den Mittelstand.