Die hochgeladene Datei übertrifft die Richtlinie upload_max_filesize
PHP lehnte die Datei ab, bevor WordPress ein Byte davon sah. Die Nummer in der Nachricht ist PHPs Decke, nicht WordPress.
The uploaded file exceeds the upload_max_filesize directive in php.ini.
Vier separate Limits können dies erzeugen, und das Anheben des falschen ändert nichts. Drucken Sie, was PHP derzeit für upload_max_filesize und post_max_size meldet, vergleichen Sie beide mit Ihrer Datei und denken Sie daran, dass post_max_size der größere der beiden sein muss oder der Upload stattdessen stillschweigend fehlschlägt.
Die wahrscheinlichsten Ursachen zuerst.
Gehen Sie die Liste der Reihe nach durch. Prüfen Sie jede Ursache, bevor Sie etwas ändern, da die Lösungen unterschiedlich sind und eine Vermutung mehr Zeit kostet als ein Befehl.
| Ursache | So prüfen Sie es | Lösung |
|---|---|---|
| upload_max_filesize liegt unterhalb der Dateigröße | Medien → Neue Drucke hinzufügen Das effektive Maximum unter der Drop-Zone. Wenn diese Zahl kleiner als die Datei ist, ist dies diejenige. | Raise upload_max_filesize in der PHP-Konfiguration, die tatsächlich geladen wird. Ein Wert in einer php.ini, den der Prozess nicht liest, ist der übliche Grund, warum eine Bearbeitung nichts zu tun scheint. |
| post_max_size ist kleiner als upload_max_filesize | Der Upload schlägt mit einem leeren $_FILES-Array statt dieser Nachricht fehl, oder der Admin-Bildschirm wird ohne Fehler erneut geladen. | Stellen Sie post_max_size über upload_max_filesize. PHP verwirft zuerst den gesamten Request-Body, so dass ein großzügiges Dateilimit hinter einem kleinen Bodylimit niemals konsultiert wird. |
| Der Webserver begrenzt die Anforderung, bevor PHP ausgeführt wird | Der Browser zeigt eine 413 von nginx oder Apache anstelle eines WordPress-Bildschirms. Nichts erscheint im PHP-Log, weil PHP nie erreicht wurde. | Erhöhen Sie client_max_body_size in nginx oder LimitRequestBody in Apache auf mindestens den PHP-Wert. Dieser Grenzwert wird auf Content-Length durchgesetzt, so dass er die Anforderung ablehnt, bevor eine davon gepuffert wird. |
| Ein Multisite-Netzwerklimit | Network Admin → Settings hat ein Feld „Max Upload File size in Kilobyte und ist niedriger als das PHP-Limit. | Erhöhen Sie die Netzwerkeinstellung. Es wird pro Site angewendet, unabhängig davon, was PHP erlaubt, und es wird in KB gemessen, während jeder andere Grenzwert hier in MB ist. |
Schritt für Schritt zur Lösung.
Die Befehle setzen WP-CLI und Shell-Zugriff voraus. Jeder Schritt erklärt, was er tut, damit Sie ihn bei Bedarf im Dashboard oder per SFTP ausführen können.
Fragen Sie PHP, was es durchsetzt, von WordPress aus
Der Wert, der zählt, ist derjenige, den der laufende Prozess hat, der nicht unbedingt derjenige in der php.ini ist, die Sie bearbeitet haben.
wp eval 'echo ini_get("upload_max_filesize"), " / ", ini_get("post_max_size"), PHP_EOL;'Finden Sie heraus, welche php.ini dieser Prozess tatsächlich lädt
Ein Stapel kann mehrere haben. Nur der geladene hat irgendeine Wirkung, und der Pfad ist für Sie gedruckt.
php --ini | head -n 3
Erhöhen Sie beide Werte, halten Sie post_max_size größer
Setzen Sie sie zusammen. Eines ohne das andere anzuheben ist die häufigste Art, wie dies halb fixiert wird.
upload_max_filesize = 256M post_max_size = 320M memory_limit = 512M
Heben Sie das Webserver-Limit auf Match
PHP sieht nie eine Anfrage, die der Webserver bereits abgelehnt hat, also muss sich auch dies bewegen.
# nginx client_max_body_size 320m; # then nginx -t && systemctl reload nginx
Bestätigen Sie, dass die neue Decke live ist
Lesen Sie es erneut aus WordPress, anstatt der Datei zu vertrauen. Wenn es sich nicht geändert hat, wurde PHP-FPM nicht erneut geladen.
systemctl reload php*-fpm wp eval 'echo ini_get("upload_max_filesize"), PHP_EOL;'
Darum kümmert sich die Plattform.
Die vier Limits werden hier zusammen gesetzt und nicht einzeln, und nginx wird bewusst über jedem Wert konfiguriert, den der PHP-Einstellungen-Bildschirm erzeugen kann – also ist der Grenzwert, den Sie sehen und ändern können, der, der tatsächlich gilt, anstatt einer kleineren Web-Server-Kappe, die ihn stillschweigend überschreibt.
Häufige Fragen.
Ich habe upload_max_filesize angehoben und nichts hat sich geändert.
Was ist der Unterschied zwischen diesem und "gescheitert, um Datei auf Festplatte zu schreiben"?
Gibt es ein Maximum, an dem ich nicht vorbeigehen sollte?
Kann ich das Limit für eine Site nur in einem Multisite-Netzwerk erhöhen?
War es keiner davon?
Diese Fehler können im Browser ähnlich aussehen.