WordPress Upload Limit erhöhen: so klappt es bei jedem Host
Prüfe dein aktuelles WordPress Upload-Limit und erhöhe es an der richtigen Stelle für deinen Host: php.ini, .user.ini, .htaccess, cPanel, Nginx oder Cloudflare.
Um das Upload-Limit in WordPress zu erhöhen, hebst du zwei PHP-Einstellungen an, upload_max_filesize und post_max_size, und zwar in der Konfigurationsdatei, die dein Host tatsächlich liest. Das ist php.ini auf einem Server, den du selbst verwaltest, .user.ini bei den meisten Shared Hosts mit PHP-FPM oder FastCGI, .htaccess nur dann, wenn Apache PHP als Modul ausführt, oder der MultiPHP INI Editor in cPanel. Läuft dein Server mit Nginx, erhöhe zusätzlich client_max_body_size. Eine Änderung in wp-config.php ändert das Upload-Limit nicht.
Das WordPress-Tool für die maximale Upload-Größe macht aus einer Zielgröße passende Werte für php.ini (oder .user.ini), .htaccess und wp-config.php. So kannst du sie einfügen, statt sie von Hand zu tippen.
Schritt 1: Dein aktuelles Upload-Limit prüfen
Bevor du etwas änderst, finde heraus, wie hoch das Limit gerade ist und welche Einstellung es bestimmt.
- Medien > Neue Mediendatei hinzufügen. Der Upload-Bildschirm zeigt die maximale Dateigröße für Uploads. Das ist die Zahl, die du erhöhen willst.
- Werkzeuge > Website-Zustand > Bericht. Klappe Medienverarbeitung auf. Die Dokumentation zum Website-Zustand beschreibt, was dort steht: die maximal erlaubte Größe der Post-Daten, die maximale Größe einer hochgeladenen Datei und die maximal wirksame Dateigröße, also der kleinere der beiden Werte. Im Abschnitt Server findest du weitere PHP-Werte.


WordPress berechnet sein Limit in wp_max_upload_size(). Die Funktion liest upload_max_filesize und post_max_size aus PHP und nimmt den kleineren Wert. Steht einer davon auf 64M und der andere auf 8M, liegt dein Limit bei 8M.
Schritt 2: Wissen, welche Einstellungen zählen
| Einstellung | Was sie begrenzt | PHP-Standard | Wo sie geändert werden kann |
|---|---|---|---|
upload_max_filesize | Die größte einzelne hochgeladene Datei | 2M | php.ini, .user.ini, .htaccess, httpd.conf |
post_max_size | Die gesamte POST-Anfrage, inklusive Datei | 8M | php.ini, .user.ini, .htaccess, httpd.conf |
memory_limit | Speicher, den PHP während der Ausführung nutzen darf | 128M | Überall, auch in wp-config.php |
max_execution_time | Sekunden, die ein Skript laufen darf | 30 | Überall, auch in wp-config.php |
client_max_body_size (Nginx) | Der Anfrage-Body, den Nginx annimmt | 1m | Nur in der Nginx-Konfiguration |
Die PHP-Standards und Änderungsmodi stammen aus der Liste der php.ini-Direktiven, der Nginx-Standard aus der Dokumentation des Nginx-Core-Moduls. Die meisten Hosts setzen höhere Werte als die PHP-Standards, deshalb liest du deine echten Zahlen im Website-Zustand ab.
upload_max_filesize und post_max_size sind laut PHP INI_PERDIR-Einstellungen: Sie „können in php.ini, .htaccess, httpd.conf oder .user.ini gesetzt werden“ und nirgendwo sonst. memory_limit begrenzt nicht die Dateigröße, aber WordPress braucht Speicher, um verkleinerte Kopien großer Bilder zu erstellen. Ein großer Upload kann deshalb nach dem Ankommen trotzdem mit einem Fehler wegen erschöpftem Speicher scheitern.
Schritt 3: Das Limit an der richtigen Stelle für deinen Host erhöhen
| Deine Umgebung | Wo du es einstellst | Hinweise |
|---|---|---|
| VPS oder dedizierter Server | Die php.ini, die dein PHP tatsächlich lädt | Danach PHP-FPM oder Apache neu starten |
| Shared Host mit PHP-FPM oder FastCGI | .user.ini im WordPress-Hauptverzeichnis | Kann bis zu 5 Minuten dauern, bis es greift |
| Apache mit PHP als Modul (mod_php) | .htaccess mit php_value | Führt unter PHP-FPM oder FastCGI zu einem 500-Fehler |
| cPanel-Host | Software > MultiPHP INI Editor | Schreibt php.ini, .user.ini oder .htaccess für dich |
| Nginx vor PHP | client_max_body_size zusätzlich zu den PHP-Werten | Sonst gibt Nginx 413 zurück |
| Managed WordPress Host | Das Dashboard oder der Support des Hosts | Viele Hosts begrenzen Uploads auf Plattformebene |
| Website hinter Cloudflare | Das eigene Upload-Limit von Cloudflare | 100 MB in den Tarifen Free und Pro |
php.ini (Server, den du selbst verwaltest)
Finde zuerst die geladene Datei. Erstelle eine temporäre Datei mit dem Inhalt <?php phpinfo();, öffne sie im Browser, lies die Zeile „Loaded Configuration File“ und lösche die Datei danach wieder. Bearbeite dann diese php.ini:
upload_max_filesize = 128M
post_max_size = 130M
max_execution_time = 300
Starte PHP anschließend neu, damit es die Änderung einliest. Bei PHP-FPM enthält der Dienstname die Version, zum Beispiel sudo systemctl restart php8.3-fpm unter Debian oder Ubuntu. Bei mod_php startest du Apache neu.
.user.ini (die meisten Shared Hosts)
PHP liest .user.ini-Dateien nur, wenn es als CGI oder FastCGI läuft, und dazu gehört PHP-FPM. Erstelle oder bearbeite .user.ini im Ordner, in dem wp-config.php liegt:
upload_max_filesize = 128M
post_max_size = 130M
PHP liest diese Dateien alle user_ini.cache_ttl Sekunden neu ein, standardmäßig alle 300. Warte fünf Minuten, bevor du entscheidest, dass es nicht geklappt hat, oder starte PHP-FPM neu, wenn du kannst.
.htaccess (nur Apache mit mod_php)
php_value upload_max_filesize 128M
php_value post_max_size 130M
Das PHP-Handbuch beschreibt diese Direktiven für PHP als Apache-Modul. Zeigt deine Website direkt nach dem Speichern einen 500 Internal Server Error, läuft PHP als FastCGI oder PHP-FPM. Entferne die Zeilen wieder und nutze stattdessen .user.ini.
cPanel MultiPHP INI Editor
Öffne in cPanel Software > MultiPHP INI Editor, wähle deine Domain und ändere die Werte im Basic Mode. Laut Dokumentation von cPanel speichert der Basic Mode in die Dateien php.ini, .user.ini und .htaccess, jeweils dort, wo die Einstellung unterstützt wird. Du musst also nicht wissen, welche Datei dein Server nutzt.
Nginx
Nginx prüft die Größe der Anfrage, bevor PHP sie sieht. Ist eine Anfrage größer als client_max_body_size, gibt Nginx 413 Request Entity Too Large zurück. Der Standard ist 1m. Trage in deinem server-Block einen Wert ein, der mindestens so groß ist wie post_max_size:
client_max_body_size 130M;
Teste und lade neu mit sudo nginx -t && sudo systemctl reload nginx. Bei Apache ist die vergleichbare Einstellung LimitRequestBody, die auf normalem WordPress-Hosting selten geändert werden muss.
Managed Hosts und Cloudflare
Manche Managed WordPress Hosts ignorieren deine php.ini oder .user.ini und legen das Limit für die ganze Plattform fest. Zeigt der Website-Zustand nach deiner Änderung immer noch die alte Zahl, frag deinen Host nach dem Maximum und ob er es erhöhen kann.
Läuft die Website über Cloudflare, hat Cloudflare ein eigenes Limit. Die Cache-Dokumentation nennt als maximale Upload-Größe 100 MB in den Tarifen Free und Pro, 200 MB in Business und bis zu 5 GB in Enterprise. Keine PHP-Einstellung kommt daran vorbei.
Warum wp-config.php nicht funktioniert
Viele Artikel empfehlen, das hier in wp-config.php einzufügen:
@ini_set( 'upload_max_filesize', '128M' );
@ini_set( 'post_max_size', '130M' );
Beide Einstellungen sind INI_PERDIR, und laut PHP-Dokumentation dürfen Einstellungen dieses Modus nicht mit ini_set() gesetzt werden. Das @ versteckt den Fehlschlag, die Zeilen wirken also harmlos und ändern nichts. Was wp-config.php ändern kann, ist der Speicher, denn memory_limit lässt sich überall setzen:
define( 'WP_MEMORY_LIMIT', '256M' );
Das hilft, wenn große Bilder bei der Verarbeitung scheitern. Die maximale Upload-Dateigröße ändert es nicht.
Schritt 4: Die Änderung prüfen
Lade Medien > Neue Mediendatei hinzufügen neu und prüfe, ob die maximale Dateigröße für Uploads deinen neuen Wert zeigt. Wenn nicht:
- Prüfe, ob
post_max_sizemindestens so groß ist wieupload_max_filesize. WordPress nimmt den kleineren Wert. - Stelle sicher, dass du die Datei bearbeitet hast, die PHP tatsächlich lädt. Eine
php.iniim falschen Ordner wird ignoriert. - Warte bei einer
.user.ini-Änderung fünf Minuten oder starte PHP-FPM neu. - Hat sich die Zahl in WordPress geändert, aber Uploads scheitern weiter mit 413, liegt die Sperre bei Nginx, beim Proxy deines Hosts oder bei Cloudflare.
- Kommt der Upload in WordPress an und scheitert dann mit „HTTP-Fehler“, ist die Größe nicht mehr das Problem. Unser Ratgeber zum WordPress HTTP-Fehler beim Bild-Upload erklärt die üblichen Ursachen.
Wie hoch solltest du es setzen?
Setze es auf die größte Datei, die du wirklich hochladen musst, mit etwas Puffer, und halte post_max_size etwas über upload_max_filesize. Große Uploads dauern auch länger, erhöhe also max_execution_time, wenn große Dateien bei langsamen Verbindungen abbrechen. Für sehr große Dateien wie lange Videos oder Backup-Archive ist ein Upload per SFTP oder mit einem Plugin für stückweise Uploads meist zuverlässiger als ein riesiger Browser-Upload, und ein Cloudflare-Tariflimit schließt den Weg über den Browser vielleicht ohnehin aus.
Wenn du dein Ziel kennst, schreibt dir das Tool für die maximale Upload-Größe die passenden PHP-Zeilen. Die Nginx-Zeile aus diesem Ratgeber fügst du selbst hinzu, wenn dein Server mit Nginx läuft.
FAQ
Fragen
Wie prüfe ich mein aktuelles Upload-Limit in WordPress?
Geh zu Medien > Neue Mediendatei hinzufügen. Der Upload-Bildschirm zeigt die maximale Dateigröße für Uploads. Für die Details dahinter öffne Werkzeuge > Website-Zustand > Bericht und klappe Medienverarbeitung auf. Dort stehen die maximale Größe einer hochgeladenen Datei, die maximale Größe der Post-Daten und die maximal wirksame Dateigröße, also der kleinere der beiden Werte.
Warum meldet WordPress, dass die hochgeladene Datei die upload_max_filesize-Direktive in php.ini überschreitet?
Die Datei ist größer als die PHP-Einstellung upload_max_filesize. WordPress legt dieses Limit nicht fest, es liest es aus PHP. Erhöhe upload_max_filesize und post_max_size gemeinsam in php.ini, .user.ini oder, bei Apache mit mod_php, in .htaccess. Der PHP-Standard für upload_max_filesize liegt bei nur 2M, die meisten Hosts setzen aber einen höheren Wert.
Kann ich das Upload-Limit über wp-config.php erhöhen?
Nein. upload_max_filesize und post_max_size sind PHP_INI_PERDIR-Einstellungen, die PHP nur aus php.ini, .htaccess, httpd.conf oder .user.ini übernimmt. Eine ini_set()-Zeile in wp-config.php läuft ohne Fehler durch und ändert nichts. Über wp-config.php lässt sich das Speicherlimit von WordPress erhöhen, aber der Speicher begrenzt nicht die Dateigröße.
Warum bekomme ich nach dem Erhöhen der PHP-Limits immer noch 413 Request Entity Too Large?
Etwas vor PHP lehnt die Anfrage ab. Bei Nginx ist das client_max_body_size, dessen Standard bei 1m liegt und das beim Überschreiten einen 413-Fehler zurückgibt. Erhöhe den Wert im server-Block und lade Nginx neu. Läuft deine Website über Cloudflare, kann auch das Upload-Limit deines Cloudflare-Tarifs die Anfrage stoppen, bevor sie deinen Server erreicht.
Muss post_max_size größer sein als upload_max_filesize?
Es sollte mindestens genauso groß sein, etwas größer ist sicherer. Die Datei wird zusammen mit anderen Formulardaten in einer POST-Anfrage gesendet, deshalb zählt die gesamte Anfrage gegen post_max_size. WordPress nutzt den kleineren der beiden Werte als Upload-Limit. Erhöhst du nur upload_max_filesize, bleibt das Limit also, wo es war.