Das Upload Limit in WordPress erhöhen
Drei Einstellungen bestimmen dein WordPress Upload Limit, und sie müssen alle zusammenpassen. Das tatsächliche Limit ist der kleinste Wert aus upload_max_filesize, post_max_size,
Veröffentlicht
Drei Einstellungen bestimmen dein WordPress Upload Limit, und sie müssen alle zusammenpassen. Das tatsächliche Limit ist der kleinste Wert aus upload_max_filesize, post_max_size und dem Request-Limit deines Webservers. Wenn du nur einen davon erhöhst und die anderen beiden niedrig lässt, ändert sich nichts — und genau deshalb kommen die meisten zu dem Schluss, ihre Lösung habe “nicht funktioniert”. Prüfe zuerst deine aktuellen Werte mit dem WordPress Max Upload Size Tool; es liest dieselben Werte aus, die WordPress meldet, und zeigt dir, welcher davon dich ausbremst.
Warum das Limit existiert und wo es liegt
WordPress legt das Upload Limit nicht fest. Es meldet es nur. Wenn du “The uploaded file exceeds the upload_max_filesize directive in php.ini” siehst, kommt diese Meldung direkt von PHP.
Drei getrennte Werte begrenzen einen Upload, und die echte Obergrenze ist der jeweils niedrigste:
upload_max_filesize(PHP) — die größte Einzeldatei, die PHP akzeptiert.post_max_size(PHP) — der größte gesamte POST-Body. Deine Datei wird zusammen mit anderen Formularfeldern innerhalb des POST-Requests übertragen, deshalb muss dieser Wert größer sein alsupload_max_filesize.- Das Body-Limit des Webservers —
client_max_body_sizebei Nginx oderLimitRequestBodybei Apache. Dieses liegt komplett außerhalb von PHP, weshalb reine PHP-Lösungen hinter Nginx stillschweigend scheitern.
Ein vierter Wert, max_execution_time, begrenzt zwar nicht die Größe, bricht aber einen langsamen, großen Upload bei schlechter Verbindung mitten in der Übertragung ab. Das ist ein separates Symptom, kein Teil der Größenobergrenze.
Die Falle: Du setzt upload_max_filesize = 256M, lädst neu und kannst trotzdem keine 100-MB-Datei hochladen — weil post_max_size immer noch bei 8M steht. PHP weist den Request schon am gesamten Body ab, bevor es die Datei überhaupt betrachtet. Das Limit hat dich nicht ignoriert. Ein anderes Limit hat es zuerst abgefangen.
So behebst du es, in der richtigen Reihenfolge
Arbeite dich von der wahrscheinlichsten Lösung zur letzten Notlösung vor.
1. php.ini bearbeiten (der richtige Ort). Finde die Datei, die deine Website tatsächlich lädt — rufe eine Seite mit <?php phpinfo(); auf und lies “Loaded Configuration File”, oder frag deinen Hoster. Setze beide PHP-Werte und halte post_max_size größer als upload_max_filesize:
upload_max_filesize = 256M
post_max_size = 260M
max_execution_time = 300
Starte PHP-FPM (sudo systemctl restart php8.2-fpm) oder Apache neu. Die Änderungen greifen erst, wenn der PHP-Prozess neu startet.
2. Kein Zugriff auf php.ini? Nutze .htaccess (nur Apache + mod_php). Ergänze die .htaccess im WordPress-Stammverzeichnis:
php_value upload_max_filesize 256M
php_value post_max_size 260M
php_value max_execution_time 300
Das funktioniert nur, wenn PHP als Apache-Modul läuft. Unter PHP-FPM, CGI oder FastCGI wirft php_value einen 500-Fehler — dieser Fehler bedeutet, dass du auf dem falschen Weg bist, nicht dass der Wert falsch ist. Wechsle dann zu .user.ini:
upload_max_filesize = 256M
post_max_size = 260M
3. Das Webserver-Limit erhöhen — der Schritt, den alle vergessen. Bei Nginx sieht PHP einen zu großen Request nie; Nginx gibt zuerst 413 Request Entity Too Large zurück. In deinem Server-Block:
client_max_body_size 256M;
Lade mit sudo nginx -t && sudo systemctl reload nginx neu. Wenn du auf Nginx bist und deine PHP-Änderungen “nichts gebracht” haben, liegt es fast immer daran.
Prüfe nach jeder Änderung die gemeldeten Werte erneut. Das Max Upload Size Tool zeigt dir die neue tatsächliche Obergrenze und erzeugt den exakten Snippet für dein Setup, damit du nicht rätseln musst, welcher der drei Werte noch zu niedrig ist.
Was du nicht tun solltest
Bearbeite nicht die wp-config.php in der Erwartung, damit das Limit anzuheben. Die vielfach kopierte Zeile tut nicht, was die Blogbeiträge behaupten:
@ini_set( 'upload_max_filesize' , '256M' );
upload_max_filesize ist PHP_INI_PERDIR. Es lässt sich zur Laufzeit nicht per ini_set() aus PHP heraus ändern. Es akzeptiert neue Werte nur aus php.ini, .htaccess oder .user.ini — niemals aus dem Anwendungscode. Die Zeile läuft ohne Fehler durch und bewirkt nichts, was sie zu einem der am selbstbewusstesten wiederholten Falschratschläge in WordPress macht.
Füge auch nicht @ini_set('post_max_size', ...) ein — dieselbe Einschränkung, derselbe stille Leerlauf.
Setze nicht WP_MEMORY_LIMIT und denke, das sei das Upload Limit. Das steuert das Speicherlimit von PHP für laufenden Code. Es hat nichts damit zu tun, wie groß eine Datei ist, die der Server akzeptiert.
Bleib nicht bei einer Datei stehen. Der mit Abstand häufigste Fehler ist, nur upload_max_filesize zu ändern und die Lösung dann für kaputt zu erklären. Ändere alle drei Werte und halte post_max_size über upload_max_filesize.
Setze die Limits nicht “zur Sicherheit” absurd hoch. Ein Limit von 2 GB lädt zu Problemen mit Ressourcenerschöpfung ein und hilft nicht — wenn du wirklich Dateien im Gigabyte-Bereich brauchst, lade sie außerhalb des Browsers hoch (SFTP oder ein Chunked-Upload-Plugin), statt sie durch einen einzelnen PHP-POST zu zwingen.
Immer noch festgefahren?
Wenn alle drei Werte angehoben sind und du trotzdem gegen eine Wand läufst, wird der Request irgendwo vor deinem Server begrenzt: ein CDN oder Proxy (das Dashboard von Cloudflare begrenzt die Upload-Body-Größe eigenständig), ein Plattform-Limit eines Managed Hosters, das deine php.ini ignoriert, oder eine .user.ini, die sich noch nicht aktualisiert hat — sie richtet sich nach PHPs user_ini.cache_ttl und kann daher nach dem Speichern ein paar Minuten hinterherhinken. Prüfe, was der Server tatsächlich meldet, nicht was du in eine Datei geschrieben hast, und behebe die Ebene, die noch zu niedrig ist. Wenn die gemeldete Zahl endlich mit deinem Zielwert übereinstimmt, funktioniert der Upload.