Ein gescheiterter Upload ist fast immer eines von drei Limits, und das eine zu erhöhen, das man kennt, lässt die anderen beiden im Weg stehen. Alle drei müssen mindestens so groß sein wie die Datei.

Die drei

  • upload_max_filesize (PHP) - die größte einzelne Datei.
  • post_max_size (PHP) - die ganze Anfrage, also muss es GRÖSSER sein als die Datei: die Formularfelder zählen mit.
  • client_max_body_size (Nginx) - der Webserver lehnt ab, bevor PHP überhaupt erreicht wird.
; php.ini
upload_max_filesize = 64M
post_max_size = 72M
memory_limit = 256M
# nginx
client_max_body_size 72M;

Welches abgelehnt hat

  • 413 Request Entity Too Large - Nginx. PHP hat es nie gesehen.
  • Eine PHP-Meldung über die Größe - upload_max_filesize.
  • Ein leeres $_POST ohne Fehler - post_max_size. PHP wirft die ganze Anfrage lautlos weg, und darum ist gerade dieses Limit so verwirrend.

Prüfen, ob die Änderung gegriffen hat

php -i | grep -E "upload_max_filesize|post_max_size"
Das liest die CLI-Konfiguration, und die ist oft eine andere Datei als die, die der Webserver benutzt. Vertrauen Sie einer phpinfo()-Seite mehr als der Kommandozeile - nur sie zeigt, womit Ihre Website tatsächlich läuft.
WordPress zeigt das wirksame Limit auf der Medienseite. Steht dort nach einer Änderung noch die alte Zahl, wurde PHP-FPM nicht neu geladen: systemctl reload php8.3-fpm.