Infrastruttura

Perché il tuo sito rifiuta un file prima di salvarlo

Il predefinito di client_max_body_size, sulla pagina di nginx, è 1m e oltre quel tetto torna un 413. Se il corpo arriva a PHP e supera post_max_size, il manuale dice che il modulo resta vuoto.

Marco Conte 2 min di lettura

Perché il tuo sito rifiuta un file prima di salvarlo
In questa guida (4)
  1. 1Il rifiuto del server che sta davanti
  2. 2Il tetto che Apache scrive in byte
  3. 3Quando PHP svuota il modulo
  4. 4Se il file invece viene accettato

Un visitatore sceglie un file, conferma l'invio, e il file non compare dove il sito dovrebbe conservarlo. Il 9 novembre 2026 ho letto la pagina di nginx su client_max_body_size, la direttiva LimitRequestBody di Apache, le voci upload_max_filesize e post_max_size del manuale PHP, e lo stato 413 in RFC 9110. Non ho caricato un file su un sito di prova.

Il rifiuto del server che sta davanti

La direttiva client_max_body_size vale nei contesti http, server e location. Il valore predefinito scritto nella pagina è 1m. Se il corpo della richiesta supera il valore configurato, al client torna l'errore 413 (Request Entity Too Large). La stessa pagina avvisa che i browser non mostrano bene questo errore, e che il valore 0 disattiva il controllo sulla dimensione del corpo.

RFC 9110 chiama lo stesso stato 413 Content Too Large: il server rifiuta di elaborare la richiesta perché il contenuto è più grande di quanto è disposto o in grado di elaborare. Può terminare la richiesta, se la versione del protocollo lo consente, oppure chiudere la connessione. Se la condizione è temporanea, dovrebbe generare un campo Retry-After. La frase tra parentesi sulla pagina di nginx e la frase della RFC sono due nomi pubblicati per lo stesso numero. Non ho letto l'intestazione di una risposta vera.

Il tetto che Apache scrive in byte

LimitRequestBody restringe la dimensione totale del corpo della richiesta HTTP inviato dal client. Il predefinito indicato nella documentazione di Apache HTTP Server 2.4 è 1073741824 byte, cioè 1024 moltiplicato tre volte per se stesso. Fino alla versione 2.4.53 compresa, la stessa pagina scrive che il predefinito era 0, e che 0 significa senza limite. Se la richiesta supera il limite, il server risponde con un errore invece di servirla. Accanto a quella frase la pagina non stampa il numero 413.

Quando PHP svuota il modulo

Nel manuale, post_max_size ha il predefinito 8M ed è segnato INI_PERDIR. Se la dimensione dei dati del post supera post_max_size, restano vuote sia la raccolta dei campi inviati sia quella dei file caricati. upload_max_filesize è la dimensione massima di un singolo file caricato: il predefinito in tabella è 2M, e la pagina dice che post_max_size deve essere più grande di questo valore. Un file può quindi passare il megabyte predefinito di nginx e fermarsi in PHP, oppure fermarsi prima ancora che PHP veda il corpo.

Se il file invece viene accettato

Dove resta un file che il sito ha già accettato è un'altra domanda, in Dove resta il file che un visitatore carica sul tuo sito. I numeri di questa pagina sono i predefiniti letti il 9 novembre 2026. Non sono la configurazione di un sito vero, e non ho confrontato i tre controlli sulla stessa macchina.

L'immagine di copertina, sulla scheda Wikimedia, è di Gre123gr, con data 6 aprile 2023 e licenza CC0. È la tastiera retroilluminata di un portatile. Non è un caricamento e non è una risposta 413.

Potrebbe interessarti anche...

Hai bisogno di scegliere una webagency per il tuo progetto?

Abbiamo la soluzione giusta

Parliamone
  • Consulenza specializzata
  • Soluzioni su misura
  • Risultati concreti

Tecnologialiberaper tutti

Hai bisogno d'aiuto?

Parla con noi. Il nostro supporto è attivo tutti i giorni dalle 9 alle 18

+390835239514 Chiamaci

Crea il tuo eCommerce

Creiamo eCommerce su misura senza farti spendere un patrimonio

info@roxxoitalia.com Scopri il nostro CMS

Crea il tuo sito web

Siti web già pronti per andare online. Vuoi saperne di più? Contattaci

info@roxxoitalia.com Scrivici