back to top

Correggere l’errore the uploaded file exceeds the upload_max_filesize directive in php.ini

L’errore the uploaded file exceeds the upload_max_filesize directive in php.ini si verifica quando si cerca di caricare, all’interno di un modulo di upload in un sito web scritto in PHP, un file che supera la dimensione massima consentita dalle impostazioni del server. In questo articolo, spiegherò quando si verifica questo errore, quali sono le direttive che ne determinano il verificarsi e come risolvere il problema.

Il file php.ini

Il file php.ini è un file di configurazione utilizzato da PHP per definire le impostazioni del server. Contiene diverse opzioni che possono essere modificate per personalizzare il comportamento di PHP sul server, come il limite di memoria massimo, la massima dimensione dei file che possono essere caricati e altro ancora.

Il file php.ini viene letto dal server web al momento dell’avvio di PHP e le impostazioni al suo interno verranno applicate dal server a tutti gli script PHP in esecuzione.

Se il tuo sito web è installato su uno spazio condiviso, di solito, queste direttive non possono essere modificate, tranne eventualmente in modo limitato poiché la gestione del file php.ini è ad appannaggio dell’amministratore di sistema (eccezioni possono esserci, ma dipende dalle caratteristiche dell’hosting che hai acquistato).

La direttiva upload_max_filesize di php.ini

La dimensione massima dei file caricabili è specificata nella direttiva upload_max_filesize presente nel file php.ini. Questa direttiva definisce la dimensione massima dei file che possono essere caricati nel sistema tramite HTTP.

Ad esempio, se provi ad inviare un file di 9 MB e il valore di upload_max_filesize è impostato su 8, incontrerai questo errore, appunto perché il file che si cerca di inviare eccede la dimensiona massima stabilita.

Altre direttive coinvolte nell’upload di file: post_max_size

upload_max_filesize e post_max_size sono entrambe direttive presenti nel file di configurazione di PHP che vengono utilizzate per controllare la dimensione massima dei file che possono essere caricati sul server.

upload_max_filesize, come abbiamo visto, specifica la dimensione massima di un singolo file che può essere caricato sul server. Questa direttiva si applica esclusivamente ai file caricati tramite un input di tipo file in un modulo HTML.

post_max_size, invece, specifica la dimensione massima totale dei dati che possono essere inviati tramite una richiesta HTTP POST, che include sia i file caricati che i dati di testo inviati da un modulo HTML.

In altre parole, post_max_size rappresenta la dimensione massima totale della richiesta HTTP POST, mentre upload_max_filesize rappresenta la dimensione massima di un singolo file che può essere caricato tramite la richiesta HTTP POST.

Per garantire che i file possano essere caricati correttamente sul server, pertanto, è necessario che il valore di post_max_size sia uguale o maggiore rispetto a quello di upload_max_filesize.

In caso contrario, potrebbero verificarsi errori quando si cerca di caricare file di dimensioni adeguate rispetto a quelle consentite da upload_max_filesize, ma comunque superiori al limite massimo specificato in post_max_size.

Problemi di memoria?

Anche il parametro memory_limit presente nel file php.ini può influire sul caricamento dei file in quanto definisce la quantità massima di memoria che uno script PHP può utilizzare.

Se questo valore è impostato troppo basso, potrebbe non essere possibile caricare file di grandi dimensioni a causa della mancanza di memoria disponibile per elaborare la richiesta di caricamento. In questo caso, però, l’errore visualizzato sarebbe diverso da quello causato dalla direttiva upload_max_filesize.

Verificare il valore attuale di upload_max_filesize e post_max_size

Esistono diversi modi per verificare il valore attuale delle direttive in oggetto. Il più semplice consiste nel creare un file PHP (chiamandolo, ad esempio, phpinfo.php) e inserire il seguente codice:

<?php phpinfo(); ?>

Questo codice visualizza una pagina di informazioni sulle impostazioni di PHP sul server, tra cui upload_max_filesize e post_max_size.

Per trovare il valore di queste direttive senza leggere tutto il contenuto della pagina generata da phpinfo(), è possibile utilizzare la funzione di ricerca del browser (ad esempio, premendo Ctrl+F su Windows o Command+F su Mac) per cercare la stringa "upload_max_filesize" e successivamente "post_max_size". Questo dovrebbe portare direttamente alle righe che contengono i valori di queste impostazioni di configurazione.

In alternativa al metodo appena proposto, per verificare il valore attuale di upload_max_filesize e post_max_size, è possibile utilizzare il seguente codice PHP:

echo 'Valore di post_max_size: ' . ini_get('post_max_size') . '<br>';
echo 'Valore di upload_max_filesize: ' . ini_get('upload_max_filesize');

Questo codice stampa i valori correnti in byte. Per convertire l’output in un formato più leggibile, ad esempio megabyte, è possibile utilizzare una funzione come questa:

function converti_in_mb($bytes) {
  return $bytes / 1048576;
}
echo 'Valore di post_max_size: ' . converti_in_mb(ini_get('post_max_size')) . ' MB<br>';
echo 'Valore di upload_max_filesize: ' . converti_in_mb(ini_get('upload_max_filesize')) . ' MB';

Questo codice converte il valore corrente di post_max_size e upload_max_filesize in megabyte e lo stampa a schermo.

Come risolvere l’errore "the uploaded file exceeds the upload_max_filesize directive in php.ini"

Una volta appurato che il valore indicato nel file php.ini è troppo basso rispetto alle nostre esigenze, dovremo semplicemente intervenire sul file di configurazione per aumentarlo.

Editare il file php.ini

È possibile farlo accedendo direttamente al file php.ini tramite un editor di testo o tramite il pannello di controllo del proprio hosting provider (ad esempio, utilizzando cPanel è possibile agire sulle impostazioni della versione di PHP installata nello spazio web).

Se si edita il file php.ini sarà necessario riavviare PHP affinché le modifiche apportate abbiano effetto.

Se non si ha la possibilità di editare direttamente il file php.ini, può essere comunque possibile risolvere il problema agendo in altro modo utilizzando uno dei seguenti metodi:

Utilizzo del file .htaccess

È possibile creare un file .htaccess nel proprio sito web e inserire le seguenti righe di codice per aumentare la dimensione massima consentita per i file caricati:

php_value post_max_size 64M
php_value upload_max_filesize 64M

Nel nostro esempio abbiamo impostato entrambe le direttive a 64 MB.

Agire sul codice PHP del proprio script

In alternativa all’utilizzo di .htaccess è possibile inserire queste righe di codice all’inizio del proprio script per aumentare la dimensione massima consentita per i file caricati:

ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');

Errore 500: purtroppo non è sempre possibile personalizzare la configurazione di PHP

Si noti che i metodi appena descritti potrebbero non essere disponibili in tutti gli ambienti e potrebbero essere influenzati da eventuali restrizioni imposte dall’host o dal server.

Non è da escludere, quindi, che questi tentativi non vadano a buon fine e, addirittura, potrebbero produrre un errore 500. Se così fosse, sarà necessario eliminare il codice appena inserito e contattare l’hosting provider chiedendo, se possibile, una personalizzazione del file php.ini in base alle vostre esigenze.

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

Leggi anche...

Cannot modify header information – headers already sent: come risolvere l’errore PHP

L'errore di PHP cannot modify header information - headers...

Ricavare l’estensione di un file con PHP

Quando si lavora con i file in un'applicazione web,...

GD Library: creazione, manipolazione e ridimensionamento immagini con PHP

Le librerie GD (o GD Library), sono componenti fondamentali...

PHP: impostare il fuso orario italiano

Le tue pagine PHP non mostrano l’orario corretto? Probabilmente...

5 script PHP per gestire BBCode

A volte può aversi l'esigenza di dover offrire agli...

Estrarre hostname e dominio da una URL con PHP

Grazie alla funzione parse_url() di PHP รจ possibile analizzare...
Pubblicitร