Upload-Größe in WordPress erhöhen: PHP- und Serverlimits richtig anpassen
Upload-Grenze in WordPress anheben: Fehlermeldungen richtig deuten, upload_max_filesize und post_max_size an der passenden Stelle setzen, nginx-Limit 413 beheben und große Dateien per WP-CLI importieren.
WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Mehr dazu

„Die hochgeladene Datei überschreitet die Direktive upload_max_filesize in der php.ini.“ Diese Meldung sehen viele WordPress-Nutzer, sobald sie ein PDF, ein Video oder ein Theme-Paket hochladen wollen. Die Grenze setzt nicht WordPress, sondern PHP und manchmal zusätzlich der Webserver davor. Diese Anleitung zeigt, wie Sie herausfinden, welche Grenze greift, wie Sie sie an der richtigen Stelle anheben und wie Sie große Dateien ganz ohne Browser-Upload in die Mediathek bringen. Alle Fehlerbilder und Lösungen wurden im Labor mit WordPress 7.1.2, PHP 8.4, Apache und einem vorgeschalteten nginx nachgestellt.
Voraussetzungen
- WordPress: eine aktuelle Installation, im Labor WordPress 7.1.2 in deutscher Sprache.
- PHP: eine unterstützte Version, im Labor PHP 8.4 im offiziellen Docker-Image (Standard dort:
upload_max_filesize2M,post_max_size8M). - Zugriff: Rolle Administrator im Backend. Dazu je nach Weg Zugang zum Hosting-Kundenmenü, SFTP für
.user.inioder.htaccessoder SSH mit Root-Rechten für Server-Konfiguration und WP-CLI. - Speicherplatz: ausreichend freier Platz im Webspace. Größere Uploads füllen auch Ihre Backups.
- Backup: eine Kopie der
.htaccessund der Konfigurationsdateien, die Sie ändern, sowie ein aktuelles Backup der Website. Eine fehlerhafte Zeile in der.htaccessführt sofort zu Serverfehler 500.
Schritt 1: Aktuelle Grenze und Fehlerbild bestimmen
Öffnen Sie Medien > Mediendatei hinzufügen. Unter dem Upload-Feld steht „Maximale Dateigröße für Uploads: 2 MB.“ oder ein anderer Wert. WordPress berechnet diesen Wert in der Funktion wp_max_upload_size() als Minimum aus upload_max_filesize und post_max_size. Die Einzelwerte finden Sie unter Werkzeuge > Website-Zustand > Information > Server.
Welche Meldung Sie beim fehlgeschlagenen Upload erhalten, verrät, welche Grenze greift. Im Labor ergaben sich drei Fehlerbilder:
| Meldung | Ursache | Lösung |
|---|---|---|
| „Die hochgeladene Datei überschreitet die Direktive upload_max_filesize in der php.ini.“ | Datei größer als upload_max_filesize, aber kleiner als post_max_size | Schritt 2 und 3 |
| Fehlerseite „Der Link, dem … gefolgt …, ist abgelaufen.“ (HTTP 403) | gesamte Anfrage größer als post_max_size, PHP verwirft alle Formulardaten inklusive Sicherheitsschlüssel | Schritt 2 und 3, post_max_size anheben |
| „413 Request Entity Too Large“, oft als allgemeiner HTTP-Fehler in der Mediathek | nginx davor lässt die Anfrage nicht durch | Schritt 4 |
Das zweite Fehlerbild führt häufig in die Irre, weil die Meldung nach abgelaufener Sitzung klingt. Tatsächlich kommen bei zu großer Anfrage keine Formulardaten bei WordPress an. Die Sicherheitsprüfung schlägt deshalb fehl.
Verifizieren: Sie kennen die angezeigte Grenze, die beiden PHP-Werte und die genaue Fehlermeldung Ihres fehlgeschlagenen Uploads.
Schritt 2: Zielwerte festlegen
Überlegen Sie, welche Dateien Sie tatsächlich hochladen. Für Bilder und PDFs genügen meist 32 bis 64 MB. Videos sind im Webspace oft schlecht aufgehoben, weil jeder Abruf Bandbreite und Speicher kostet. Ein externer Videodienst oder ein Download-Server ist dafür häufig die bessere Wahl.
Setzen Sie post_max_size immer mindestens so hoch wie upload_max_filesize. Die Anfrage enthält neben der Datei noch Formularfelder, und PHP prüft die Gesamtgröße gegen post_max_size. Im Labor zeigte WordPress bei upload_max_filesize = 64M und unverändertem post_max_size = 8M nur „Maximale Dateigröße für Uploads: 8 MB.“ an. Ein Wert allein bringt also nichts.
Verwenden Sie die Kürzel K, M oder G ohne „B“. PHP interpretiert „64MB“ nicht als 64 Megabyte, sondern gibt eine Warnung „unknown multiplier "B"“ aus und rechnet mit einem falschen Wert. Beim Hochladen großer Dateien kann zusätzlich max_execution_time oder max_input_time greifen, vor allem bei langsamer Verbindung. Heben Sie diese Werte nur an, wenn Uploads nachweislich abbrechen.
Verifizieren: Sie haben zwei Zielwerte notiert, etwa 64M für beide Einstellungen, und post_max_size ist nicht kleiner als upload_max_filesize.
Schritt 3: PHP-Grenzen an der richtigen Stelle anheben
Welche Stelle wirkt, hängt von Ihrer Umgebung ab. Beide Einstellungen haben im PHP-Handbuch den Modus INI_PERDIR. Sie lassen sich also nicht per ini_set() im laufenden Skript oder in der wp-config.php ändern, wohl aber in php.ini, .user.ini und .htaccess.
Variante A, Shared Hosting mit PHP-Menü: Die meisten Hoster bieten im Kundenbereich eine Seite für PHP-Einstellungen. Tragen Sie dort upload_max_filesize und post_max_size ein. Das ist der sauberste Weg, weil der Hoster seine eigene Konfiguration kennt und Obergrenzen vorgibt.
Variante B, eigener Server: Legen Sie im Verzeichnis für zusätzliche INI-Dateien eine eigene Datei an, im offiziellen PHP-Docker-Image unter /usr/local/etc/php/conf.d/, bei Debian und Ubuntu mit PHP-FPM im conf.d-Ordner unter /etc/php/VERSION/fpm/:
; /usr/local/etc/php/conf.d/zz-upload.ini
upload_max_filesize = 64M
post_max_size = 64M
Laden Sie danach PHP neu: bei Apache mit mod_php per apachectl graceful, bei PHP-FPM über den FPM-Dienst.
Variante C, PHP-FPM ohne Serverzugriff: Legen Sie im WordPress-Hauptverzeichnis eine Datei .user.ini mit denselben zwei Zeilen an. PHP liest diese Datei nur bei CGI und FastCGI und cacht sie standardmäßig 300 Sekunden (user_ini.cache_ttl). Warten Sie also bis zu fünf Minuten.
Variante D, Apache mit mod_php: Tragen Sie die Werte oberhalb von # BEGIN WordPress in die .htaccess ein:
<IfModule mod_php.c>
php_value upload_max_filesize 64M
php_value post_max_size 64M
</IfModule>
Unter PHP-FPM ist php_value in der .htaccess keine gültige Anweisung und führt ohne die <IfModule>-Klammer zu Fehler 500. Welche PHP-SAPI Ihre Website nutzt, zeigt der Website-Zustand unter Information > Server in der Zeile „PHP-SAPI“ bei Aufruf im Browser: apache2handler steht für das Apache-Modul, fpm-fcgi für PHP-FPM. Mehr zur Reihenfolge der Konfigurationsdateien lesen Sie in PHP-OPcache und PHP-Einstellungen für WordPress messen und anpassen.
Verifizieren: Unter Medien > Mediendatei hinzufügen steht der neue Wert. Im Labor sprang die Anzeige nach der eigenen INI-Datei von „2 MB“ auf „64 MB“, und eine Testdatei mit rund 9,3 MB, die vorher abgelehnt wurde, landete danach in der Mediathek.
Schritt 4: Grenzen des Webservers prüfen
Steht nginx vor PHP oder vor Apache, prüft es die Größe der Anfrage selbst, bevor PHP sie sieht. Die Direktive client_max_body_size hat laut nginx-Dokumentation den Standardwert 1m. Größere Anfragen beantwortet nginx mit 413. Im Labor lieferte ein vorgeschalteter nginx ohne Anpassung für eine 3-MB-Datei genau diese Antwort:
413 Request Entity Too Large
Die Dokumentation weist darauf hin, dass Browser diese Fehlerseite nicht korrekt darstellen. In der Mediathek sehen Sie daher oft nur einen allgemeinen HTTP-Fehler. Ergänzen Sie im server-Block Ihrer Website:
client_max_body_size 64m;
Testen Sie mit nginx -t und laden Sie mit systemctl reload nginx neu. Im Labor kam die Anfrage danach bei WordPress an. Auf Apache gibt es die Entsprechung LimitRequestBody. Seit Apache 2.4.54 liegt der Standard laut Dokumentation bei 1073741824 Byte (1 GiB), vorher war er unbegrenzt. Für normale WordPress-Uploads spielt er daher selten eine Rolle, es sei denn, ein Hoster hat ihn bewusst niedriger gesetzt.
Bei Shared Hosting mit nginx haben Sie auf diese Einstellung keinen Zugriff. Fragen Sie den Hoster, welche Obergrenze gilt, bevor Sie PHP-Werte darüber setzen.
Verifizieren: Ein Upload knapp unter Ihrer Zielgröße endet nicht mehr mit 413 oder einem allgemeinen HTTP-Fehler, sondern erscheint in der Mediathek.
Schritt 5: Große Dateien ohne Browser-Upload importieren
Manche Dateien sollten gar nicht durch den Browser. Ein 500-MB-Video über eine instabile Leitung bricht leicht ab, und hohe Grenzen erlauben das auch jedem Konto mit Upload-Recht. Laden Sie die Datei stattdessen per SFTP in ein Verzeichnis außerhalb von wp-content/uploads und übernehmen Sie sie mit WP-CLI in die Mediathek:
wp media import /pfad/zur/datei.mp4 --title="Produktvideo" --porcelain
--porcelain gibt nur die ID des neuen Anhangs aus, im Labor zum Beispiel 5. Der Befehl ist an die PHP-Upload-Grenzen nicht gebunden, weil keine HTTP-Anfrage stattfindet: Im Labor ließ sich eine Datei mit rund 9,3 MB bei einer Upload-Grenze von 2 MB problemlos importieren. WordPress kopiert die Datei dabei in den Upload-Ordner, das Original können Sie danach löschen.
Wer mehrere Autorinnen und Autoren hat, fährt oft gut mit moderaten Grenzen im Browser und dem Import für die seltenen großen Dateien. Damit bleibt die Angriffsfläche klein und der Speicher überschaubar. Genau diese Abwägung ist Teil der laufenden Pflege: Wachsende Mediatheken, wachsende Backups, Speichergrenzen des Hostings. Wer das nicht selbst im Kalender halten möchte, kann es abgeben: Die WordPress-Wartung von wordpressupdate.de sichert die Website wöchentlich auf externen Speicher mit vier Wochen Aufbewahrung und spielt Updates von WordPress, Plugins und Themes mit Kompatibilitätsprüfung ein.
Verifizieren: wp media import gibt eine ID aus, und die Datei erscheint unter Medien > Mediathek.
Typische Fehler
- Anzeige ändert sich nicht: Nur
upload_max_filesizewurde angehoben,post_max_sizeblieb klein. WordPress zeigt den kleineren Wert. - „Der Link, dem … gefolgt …, ist abgelaufen.“ beim Upload: Die Anfrage überschreitet
post_max_size. Heben Sie diesen Wert an, eine erneute Anmeldung hilft nicht. - HTTP-Fehler oder 413 in der Mediathek: nginx begrenzt die Anfrage mit
client_max_body_size. - Fehler 500 nach Änderung der .htaccess:
php_valueunter PHP-FPM oder ein Tippfehler. Stellen Sie die gesicherte Datei per SFTP wieder her. - .user.ini ohne Wirkung: Die Website läuft mit dem Apache-Modul, oder der Cache von 300 Sekunden ist noch nicht abgelaufen.
- Multisite: „Diese Datei ist zu groß. Dateien müssen kleiner als … KB sein.“ In einem Netzwerk gilt zusätzlich die Netzwerk-Option
fileupload_maxk, laut WordPress-Code standardmäßig 1500 KB. Passen Sie sie in den Netzwerkeinstellungen an. Multisite wurde im Labor nicht getestet. - Theme-Upload als ZIP scheitert trotz passender Grenze: Das Paket ist größer als angenommen. Installieren Sie Themes und Plugins alternativ per
wp theme install datei.zipauf dem Server.
Häufige Fragen
Kann ich die Grenze in der wp-config.php erhöhen?
Nein. Beide Einstellungen sind nach PHP-Handbuch nur pro Verzeichnis oder systemweit änderbar. Ein ini_set() in der wp-config.php wirkt nicht, im Labor gab der Aufruf false zurück.
Kann ich die Grenze auch absenken?
Ja. WordPress bietet den Filter upload_size_limit, mit dem ein Plugin oder Theme einen kleineren Wert vorgeben kann. Einen höheren Wert als PHP erlaubt setzt der Filter nicht durch.
Welche Grenze ist für Unternehmenswebsites sinnvoll?
So klein wie möglich, so groß wie nötig. Für Bilder und PDFs reichen meist 32 bis 64 MB. Große Einzeldateien importieren Sie besser per SFTP und WP-CLI.
Warum zeigt WP-CLI andere Werte als der Website-Zustand?
WP-CLI nutzt die PHP-Kommandozeile mit eigener Konfiguration. Für Uploads zählen nur die Werte des Webservers, also die Anzeige im Backend.
Testumfang
Getestet im Labor mit WordPress 7.1.2 (deutsch), PHP 8.4 und Apache 2.4 mit mod_php: Upload per async-upload.php mit angemeldetem Administrator, Fehlermeldung bei überschrittenem upload_max_filesize, 403 mit „Link abgelaufen“ bei überschrittenem post_max_size, Anzeige bei ungleichen Werten, eigene INI-Datei, nginx 1.26 als Proxy mit 413 und client_max_body_size, wp media import. Nicht getestet: PHP-FPM mit .user.ini, Multisite, Hosting-Kundenmenüs.
Fazit
Die Upload-Grenze in WordPress ergibt sich aus zwei PHP-Werten und gegebenenfalls einer Grenze des Webservers. Wer die Fehlermeldung genau liest, weiß, welche davon greift, und hebt sie gezielt an der Stelle an, die in der eigenen Umgebung wirkt. Für sehr große Dateien ist der Import per SFTP und WP-CLI zuverlässiger als höhere Grenzen. Wenn Sie Updates und Backups nicht selbst organisieren möchten, übernimmt das die WordPress-Wartung.
Weiterführende Anleitungen und Quellen
- PHP-OPcache und PHP-Einstellungen für WordPress messen und anpassen
- PHP-Ausführung im Upload-Ordner verhindern
- Backup-Strategie für WordPress
- WordPress Advanced Administration: PHP Optimization
- PHP-Handbuch: Core-Einstellungen (upload_max_filesize, post_max_size)
- nginx-Dokumentation: client_max_body_size
- WP-CLI: wp media import


