L’errore in oggetto appartiene alla famiglia dei codici di stato HTTP 4xx i quali identificano gli errori connessi alla richiesta effettuata dal client. In questo articolo, in modo dettagliato, vedremo in cosa consiste l’errore 413 Request Entity Too Large ed in che modo è possibile risolverlo.
Indice
Cos’è l’errore 413?
L’errore 413 Request Entity Too Large si verifica quando si tenta di caricare un file di dimensioni che superano il limite massimo di caricamento impostato nel web server remoto.
In altre parole si sta cercando di effettuare l’upload di un file troppo grande, pertanto il web server – non potendolo gestire – restituisce all’utente un messaggio di errore in cui lo informa che “l’entità della richiesta è troppo grande“.
Il messaggio mostrato all’utente può variare a seconda del web-server remoto nonché in base al client. Di seguito le diciture comuni che indicano il verificarsi di questo errore:
- Error 413
- HTTP Error 423
- HTTP Code 413
- 413 Request Entity Too Large
Come risolvere l’errore 413 Request Entity Too Large?
Questo tipo di problema non è di natura transitoria, questo significa che ricaricare la pagina o riprovare in un altro momento non poterebbe ad alcun risultato utile. Questo problema, infatti, non dipende da errori di elaborazione o sovraccarichi momentanei, ma da una esplicita configurazione del web server che, in quanto tale, produrrà sempre il medesimo risultato.
Alla luce di quanto detto, le possibili soluzioni all’errore 413 sono soltamnto due:
- effettuare l’upload di un minor numero di file o ridurne, ove possibile, la dimensione;
- effettuare una modifica alla configurazione del web-server al fine di ammettere l’upload di una maggior quantità di dati.
Aumentare la dimensione massima consentita per gli upload in PHP
Agendo sul file php.ini è possibile aumentare, se necessario, il limite impostato di default. Per effettuare questa operazione è necessario agire su due distinte direttive: post_max_size e upload_max_filesize.
upload_max_filesize = 64M
post_max_size = 65M
memory_limit = 65M
Nel nostro esempio il limite massimo per l’upload è fissato in 64 Mb. Si noti che le direttive post_max_size e memory_limit sono state impostate, come da buone abitudini, con un valore leggermente superiore.
Se non avete accesso al file php.ini potete provare ad eseguire questa operazione tramite il file .htaccess aggiungendo queste istruzioni:
php_value upload_max_filesize 64M
php_value post_max_size 65M
php_value memory_limit 65M
Si noti, tuttavia, che non sempre la modifica delle impostazioni di PHP è ammessa da .htaccess, quindi è anche possibile che l’aggiunta di questo codice non produca effetti o generi un errore 500 (questo accade, generalmente, quando PHP “gira” in modalità CGI).
Attenzione: a partire dalla versione 5.3 di PHP non è possibile agire su questi parametri utilizzando la funzione ini_set() ma è sempre necessario agire su php.ini, .htaccess, httpd.conf o .user.ini.
Risolvere l’errore 413 su NGINX
Se il vostro hosting provider utilizza NGINX, oltre alla modifica del file php.ini sarà necessaro intervenire sul file di configurazione NGINX all’interno del blocco body, in questo modo:
http {
client_max_body_size 64m;
}
Una volta conclusa la modifica sarà necessario effettuare il riavvio in questo modo:
service php5-fpm restart
service nginx reload
Ovviamente la modifica autonoma della configurazione di NGINX non è possibile in ambienti condivisi, pertanto l’unica opzione disponibile sarà contattare il vostro hosting provider.
File di grandi dimensioni e tempi di esecuzione
E’ importante sottolineare che le modifiche appena viste potrebbero produrre un effetto secondario non irrilevante. Consentire l’upload i file molto grandi, infatti, potrebbe avere un impatto anche sui tempi di esecuzione degli script (l’invio e la gestione di grosse mole di dati richiede tempo).
Il rischio, pertanto, è di risolvere l’errore 413 ma ritrovarsi nel bel mezzo dell’errore 504 Gateway timeout. In questo caso il consiglio è quello di aumentare il tempo massimo di esecuzione limitatamente allo script che gestisce l’upload.
Per farlo potrebbe essere sufficiente aggiungere, in cima allo script, questa riga di codice:
ini_set( 'max_execution_time', '300' );
Conclusione
L’errore 413 Request Entity Too Large è legato alla dimensione della richiesta del client. L’unico modo per risolvere questo errore consiste nel ridurre la dimensione della richiesta (ad esempio inviando file meno pesanti) oppure modificare le impostazioni del web-server in uno dei modi visti sopra.