Un caricamento fallito è quasi sempre uno di tre limiti, e alzare quello che si conosce lascia gli altri due di traverso. Tutti e tre devono essere grandi almeno quanto il file.
I tre
- upload_max_filesize (PHP) - il file singolo più grande.
- post_max_size (PHP) - l'intera richiesta, quindi dev'essere PIÙ GRANDE del file: contano anche i campi del modulo.
- client_max_body_size (Nginx) - il server web rifiuta prima ancora che si arrivi a PHP.
; php.ini
upload_max_filesize = 64M
post_max_size = 72M
memory_limit = 256M
# nginx
client_max_body_size 72M;
Quale dei tre ha rifiutato
- 413 Request Entity Too Large - Nginx. PHP non l'ha mai visto.
- Un messaggio di PHP sulla dimensione - upload_max_filesize.
- Un $_POST vuoto e nessun errore - post_max_size. PHP butta via l'intera richiesta in silenzio, ed è per questo che proprio questo è così sconcertante.
Verifichi che la modifica sia passata
php -i | grep -E "upload_max_filesize|post_max_size"
Questo legge la configurazione da riga di comando, che spesso è un file diverso da quello usato dal server web. Si fidi di una pagina phpinfo() più che del terminale: è l'unica che mostra con che cosa gira davvero il suo sito.
WordPress mostra il limite effettivo nella pagina dei media. Se dopo una modifica lì compare ancora il vecchio numero, PHP-FPM non è stato ricaricato:
systemctl reload php8.3-fpm.