---
title: "Upload-Größe in WordPress erhöhen: PHP- und Serverlimits richtig anpassen"
date: 2026-09-30T22:04:43+02:00
modified: 2026-11-10T17:21:34+01:00
category: wordpress
type: how_to
author: Marcel Schönfelder
canonical: https://s-edv.com/anleitungen/wordpress-upload-groesse-erhoehen-upload-max-filesize-post-max-size
keywords:
  - WordPress
  - PHP
  - Mediathek
  - nginx
  - Upload
reading_time: 9
---

# Upload-Größe in WordPress erhöhen: PHP- und Serverlimits richtig anpassen

„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.

**Kurzfassung:** Die maximale Upload-Größe in WordPress ist der kleinere der beiden PHP-Werte `upload_max_filesize` und `post_max_size`. Sie steht unter *Medien > Mediendatei hinzufügen* als „Maximale Dateigröße für Uploads“. Heben Sie beide Werte gemeinsam an: im PHP-Menü des Hosters, in einer eigenen INI-Datei, per `.user.ini` (PHP-FPM) oder per `.htaccess` (Apache-Modul). Steht nginx davor, setzen Sie zusätzlich `client_max_body_size`, sonst endet der Upload mit „413 Request Entity Too Large“. Sehr große Dateien laden Sie per SFTP hoch und übernehmen sie mit `wp media import`.

## Voraussetzungen

- [ ] **WordPress:** eine aktuelle Installation.
- [ ] **PHP:** eine unterstützte Version (Standard im offiziellen Docker-Image: `upload_max_filesize` 2M, `post_max_size` 8M).
- [ ] **Zugriff:** Rolle Administrator im Backend. Dazu je nach Weg Zugang zum Hosting-Kundenmenü, SFTP für `.user.ini` oder `.htaccess` oder 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 `.htaccess` und der Konfigurationsdateien, die Sie ändern, sowie ein aktuelles Backup der Website. Eine fehlerhafte Zeile in der `.htaccess` fü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. Es gibt 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.

> **Prüfen:** 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`. WordPress zeigt 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.

> **Prüfen:** 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/`:

```plaintext
; /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:

```apache
<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](https://s-edv.com/anleitungen/wordpress-php-opcache-einstellungen-memory-limit-upload-optimieren).

> **Prüfen:** Unter *Medien > Mediendatei hinzufügen* steht der neue Wert. Die Anzeige springt nach der eigenen INI-Datei zum Beispiel von „2 MB“ auf „64 MB“, und eine Datei mit rund 9,3 MB, die vorher abgelehnt wurde, landet 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. Ein vorgeschalteter nginx liefert ohne Anpassung für eine 3-MB-Datei genau diese Antwort:

```plaintext
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:

```nginx
client_max_body_size 64m;
```

Testen Sie mit `nginx -t` und laden Sie mit `systemctl reload nginx` neu. Danach kommt die Anfrage 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.

> **Prüfen:** 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:

```bash
$ wp media import /pfad/zur/datei.mp4 --title="Produktvideo" --porcelain
```

`--porcelain` gibt nur die ID des neuen Anhangs aus, zum Beispiel `5`. Der Befehl ist an die PHP-Upload-Grenzen nicht gebunden, weil keine HTTP-Anfrage stattfindet: So lässt sich auch 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](https://wordpressupdate.de/?utm_source=s-edv.com&utm_medium=artikel&utm_campaign=79) 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.

> **Prüfen:** `wp media import` gibt eine ID aus, und die Datei erscheint unter *Medien > Mediathek*.

## Typische Fehler

**Anzeige ändert sich nicht**

Nur `upload_max_filesize` wurde angehoben, `post_max_size` blieb 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_value` unter 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.

**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.zip` auf 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, der Aufruf gibt `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.

## 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](https://wordpressupdate.de/?utm_source=s-edv.com&utm_medium=fazit&utm_campaign=79).

## Weiterführende Anleitungen und Quellen

- [PHP-OPcache und PHP-Einstellungen für WordPress messen und anpassen](https://s-edv.com/anleitungen/wordpress-php-opcache-einstellungen-memory-limit-upload-optimieren)
- [PHP-Ausführung im Upload-Ordner verhindern](https://s-edv.com/anleitungen/wordpress-uploads-php-ausfuehrung-verhindern-htaccess-nginx)
- [Backup-Strategie für WordPress](https://s-edv.com/anleitungen/wordpress-backup-strategie-dateien-datenbank-aufbewahrung)
- [WordPress Advanced Administration: PHP Optimization](https://developer.wordpress.org/advanced-administration/performance/php/)
- [PHP-Handbuch: Core-Einstellungen (upload_max_filesize, post_max_size)](https://www.php.net/manual/en/ini.core.php)
- [nginx-Dokumentation: client_max_body_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size)
- [WP-CLI: wp media import](https://developer.wordpress.org/cli/commands/media/import/)
