Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

⚙️ Come risolvere l'errore "The uploaded file exceeds the upload_max_filesize directive" in php.ini

⚙️ Come risolvere l'errore "The uploaded file exceeds the upload_max_filesize directive" in php.ini

Carichi un tema, un plugin o un’immagine nella libreria media di WordPress e compare una riga rossa: «The uploaded file exceeds the upload_max_filesize directive in php.ini». Il file è di 10 megabyte e WordPress lo rifiuta. Una situazione familiare per chiunque amministri un sito.

Il problema non è WordPress né il tuo file. I provider di hosting limitano la dimensione dei file caricati a livello PHP e il limite standard di 2 megabyte non cambia da anni. Puoi alzarlo in cinque minuti usando uno dei cinque metodi qui sotto, dal più semplice al più avanzato.

💡 Panoramica rapida:

  • Aumenta il limite tramite wp-config.php con una singola chiamata ini_set, funziona sulla maggior parte degli host
  • Modifica le impostazioni in cPanel con MultiPHP INI Editor, se il tuo host usa cPanel
  • Crea o modifica php.ini via FTP, un metodo che funziona indipendentemente dal pannello di controllo
  • Aggiungi direttive al file.htaccess quando non hai accesso a php.ini
  • Come ultima risorsa, inserisci @ini_set nel functions.php del tema child

Da dove viene il limite upload_max_filesize

La direttiva upload_max_filesize risiede nel file di configurazione php.ini, il file principale delle impostazioni PHP sul tuo server. Determina la dimensione massima di un singolo file caricato. Il valore predefinito è 2 megabyte, sufficiente per immagini piccole, ma un tema WordPress o un video non rientrano in quel limite.

Altre due direttive operano insieme a questa: post_max_size (dimensione totale della richiesta POST, default 8 MB) e memory_limit (memoria disponibile per lo script, default 128 MB). Tutte e tre sono collegate: se alzi upload_max_filesize, verifica che post_max_size non sia inferiore al nuovo valore, altrimenti la restrizione rimarrà al livello precedente.

Puoi controllare i limiti attuali direttamente dalla bacheca di amministrazione di WordPress: vai su Media → Aggiungi nuovo e guarda la riga sotto l’area di caricamento, che mostra la dimensione massima. In alternativa, installa il plugin PHP Info e cerca le direttive rilevanti nell’output di phpinfo().

1. Aumentare il limite tramite wp-config.php

Il metodo più rapido, che funziona sulla maggior parte degli hosting condivisi. Il file wp-config.php si trova nella cartella root del sito e viene caricato prima che qualsiasi codice WordPress venga eseguito, quindi le direttive ini_set al suo interno hanno la priorità.

Collegati al server tramite un client FTP (FileZilla, un’opzione gratuita e affidabile) oppure apri File Manager nel pannello di controllo del tuo hosting. Trova wp-config.php nella cartella root (di solito public_html):

Codice per wp-config.php con limite di memoria aumentato

Aggiungi le righe seguenti alla fine del file, prima del commento /* That's all, stop editing! */:

1@ini_set('upload_max_filesize', '64M');
2@ini_set('post_max_size', '80M');
3@ini_set('memory_limit', '256M');
4@ini_set('max_execution_time', '300');

Salva il file e aggiorna la pagina della libreria media di WordPress. Il limite di caricamento dovrebbe passare a 64 megabyte. Se il numero non è cambiato, il provider di hosting ha bloccato ini_set, quindi passa al metodo successivo.

2. Modificare le impostazioni con MultiPHP INI Editor in cPanel

Se il tuo host usa cPanel, l’editor MultiPHP INI integrato ti permette di cambiare le impostazioni PHP senza modificare manualmente i file. Applica automaticamente i valori al sito selezionato e sovrascrive i default dell’hosting.

Accedi a cPanel e trova la sezione Software → MultiPHP INI Editor:

Editor MultiPHP INI in cPanel con impostazioni PHP

Seleziona il sito desiderato dal menu a tendina in cima alla pagina. Scorri fino alla direttiva upload_max_filesize e inserisci il nuovo valore (ad esempio, 64M). Subito sotto, trova post_max_size e impostalo leggermente più alto, 80M. Clicca su Applica. Le modifiche hanno effetto immediato.

Questo metodo è preferibile al primo: cPanel gestisce la sintassi in automatico e le impostazioni non si azzerano dopo gli aggiornamenti di WordPress.

3. Modificare php.ini via FTP

Se non hai accesso a cPanel o il tuo host non supporta MultiPHP INI Editor, lavora direttamente sul file php.ini. Controlla tutte le impostazioni PHP e modificarlo è il modo più affidabile per alzare i limiti.

Collegati al server via FTP e vai alla cartella root del sito. Trova il file php.ini. Se non esiste (il php.ini utente è spesso assente sugli hosting condivisi), crea un nuovo file di testo con quel nome:

Contenuto del file php.ini con impostazioni upload_max_filesize

Aggiungi le seguenti direttive al file:

1upload_max_filesize = 64M
2post_max_size = 80M
3memory_limit = 256M
4file_uploads = On
5max_execution_time = 300
6max_input_time = 300

Salva il file. Per rendere effettive le modifiche, alcuni provider di hosting richiedono una direttiva suPHP nel file .htaccess. Aggiungi questo blocco a .htaccess:

1<IfModule mod_suphp.c>
2suPHP_ConfigPath /home/yourusername/public_html
3</IfModule>

Sostituisci yourusername con il nome utente del tuo account hosting. Se il sito va in crash con un errore dopo aver aggiunto questo blocco, rimuovilo: il tuo server gira su CGI e non richiede suPHP.

Sui server locali, il percorso del file php.ini dipende dalla piattaforma: XAMPP (Windows): C:\xampp\php\php.ini; MAMP (macOS): /Applications/MAMP/conf/php/php.ini; LAMP (Linux): /etc/php/version/apache2/php.ini. Dopo la modifica, riavvia il web server.

4. Aggiungere direttive al file.htaccess

Quando il provider di hosting ha bloccato l'accesso a php.ini e ini_set non funziona, l'ultima linea di difesa a livello server è il file .htaccess. Ti permette di impostare le configurazioni PHP per una cartella specifica del sito usando le direttive php_value.

Collegati via FTP e trova .htaccess nella cartella root. Scarica una copia di backup sul tuo computer (obbligatorio!). Poi aggiungi le seguenti righe alla fine del file:

Direttive php_value nel file .htaccess per aumentare il limite di upload
1php_value upload_max_filesize 64M
2php_value post_max_size 80M
3php_value memory_limit 256M
4php_value max_execution_time 300
5php_value max_input_time 300

Salva .htaccess e aggiorna il sito. Se invece del sito compare un errore 500 Internal Server Error, il tuo server gira su CGI e la direttiva php_value in .htaccess non è supportata. Elimina le righe aggiunte per ripristinare il sito e usa il metodo 3 (creazione di php.ini).

Abbiamo trattato in dettaglio l'errore 500 e la sua variante 502 nella nostra guida alla risoluzione degli errori server di WordPress.

5. Aggiungere @ini_set nel functions.php del tema

Questo metodo è per le situazioni in cui tutti i metodi precedenti non sono disponibili o vuoi mantenere le impostazioni nel repository del tema. Aggiungi il codice al file functions.php del tuo tema child, che viene eseguito a ogni richiesta e sovrascrive i limiti al volo.

1@ini_set('upload_max_filesize', '64M');
2@ini_set('post_max_size', '80M');
3@ini_set('memory_limit', '256M');
4@ini_set('max_execution_time', '300');

Inserisci il codice alla fine di functions.php, ma prima del ?> di chiusura (se presente). Usa un tema child: quando il tema principale si aggiorna, le modifiche nel functions.php del tema principale vengono azzerate, mentre un tema child sopravvive agli aggiornamenti senza perdite.

Dopo aver aggiunto il codice, verifica il limite nella libreria media di WordPress. Nota che su alcuni host, ini_set per upload_max_filesize è bloccato a livello PHP (la direttiva PHP_INI_SYSTEM non consente di cambiare il valore a runtime). In quel caso, @ini_set verrà ignorato silenziosamente e dovrai usare il metodo 3 o 4.

Perché il limite non è cambiato: diagnostica

Hai seguito tutte le istruzioni ma il limite è rimasto lo stesso? Ripercorri questa checklist:

  • post_max_size è inferiore al nuovo upload_max_filesize. Questa è la causa più comune: post_max_size deve essere almeno uguale e, preferibilmente, più grande del 20-30% rispetto a upload_max_filesize: la documentazione PHP richiede esplicitamente post_max_sizeupload_max_filesize. I caricamenti multipli di più file e i campi del modulo concorrono al raggiungimento di post_max_size.
  • Il file è stato creato nella cartella sbagliata. PHP cerca php.ini nella directory dello script, poi risale l'albero fino alla root del server. Posiziona php.ini nella root del sito (public_html), non in una sottocartella.
  • La cache PHP (OPcache) conserva la vecchia configurazione. Alcuni server mettono in cache php.ini. Riavvia PHP tramite il pannello di hosting o attendi 5-10 minuti affinché la cache venga invalidata.
  • Il server gira su CGI/FastCGI e ignora .htaccess. Cambia approccio: usa php.ini (metodo 3) o user.ini per FastCGI.
  • Il provider di hosting ha bloccato il limite. Su piani ultra-economici, il limite di upload è fisso e non può essere modificato con nessun metodo, se non passando a un piano superiore.

Se nessuno di questi punti ha aiutato, contatta l'assistenza hosting. Fornisci il tuo dominio, il metodo che hai usato per cambiare il limite e chiedi di verificare se la sovrascrittura di upload_max_filesize è consentita sul tuo piano.

Video tutorial

Guarda il processo passo passo per correggere questo errore, dalla diagnostica alla verifica finale, in questo video:

⁉️🤔 Domande frequenti

Quale valore di upload_max_filesize dovrei scegliere?

Per la maggior parte dei siti, 64 MB sono sufficienti e coprono il caricamento di temi, plugin e immagini ad alta risoluzione. Se lavori con file video o grandi archivi ZIP tramite il pannello di amministrazione, impostalo a 128-256 MB. Non cercare gigabyte senza motivo: più alto è il limite, più memoria il server riserva per ogni richiesta di upload.

Posso caricare un file aggirando il limite?

Sì, via FTP. Un client FTP si connette direttamente al server e non passa attraverso il gestore PHP, quindi i limiti di upload_max_filesize non si applicano. Carica il file in wp-content/uploads via FTP, poi registralo nella libreria media di WordPress usando il plugin Add From Server.

Qual è la differenza tra upload_max_filesize e post_max_size?

upload_max_filesize è la dimensione massima di un singolo file in un upload. post_max_size è la dimensione totale dell'intera richiesta POST, inclusi tutti i file, i campi del form e le intestazioni di servizio. Se stai caricando tre file da 20 MB, upload_max_filesize deve essere ≥ 20 MB, mentre post_max_size deve essere ≥ 60 MB più un margine per il form. Ecco perché post_max_size va sempre impostato più alto di upload_max_filesize.

Perché i limiti si resettano dopo gli aggiornamenti di WordPress?

WordPress non tocca le impostazioni del server PHP durante gli aggiornamenti, ma se hai modificato wp-config.php o il functions.php del tema principale, gli aggiornamenti del core o del tema potrebbero aver sovrascritto quei file. Tieni sempre le impostazioni PHP personalizzate in php.ini, nell'editor MultiPHP INI di cPanel o in un tema child: queste posizioni non sono influenzate dagli aggiornamenti.

Devo riavviare il server dopo aver modificato php.ini?

Per hosting condiviso e cPanel, no: le modifiche si applicano automaticamente nel giro di pochi minuti. Per VPS e server dedicati con PHP-FPM, riavvia il servizio: sudo systemctl restart php-fpm (o php8.3-fpm, a seconda della versione). Apache con mod_php di solito recepisce le modifiche senza riavvio.

Cosa fare se il limite continua a non aumentare

I cinque metodi sopra coprono praticamente qualsiasi scenario di hosting. Dal wp-config.php di base al functions.php del tema child, hai percorso l'intera catena. Se dopo aver eseguito onestamente ogni passaggio e aver fatto la diagnostica il limite resta invariato, la causa è una politica restrittiva del provider di hosting e non puoi aggirarla senza cambiare piano o fornitore.

Contatta l'assistenza e chiedi direttamente se la modifica di upload_max_filesize è consentita sul tuo piano. Una risposta negativa è un motivo per considerare il passaggio a un VPS o a un piano condiviso più flessibile, dove puoi controllare le impostazioni PHP senza vincoli legati agli altri utenti del server. Nel frattempo, carica i file grandi via FTP: lì non ci sono restrizioni di dimensione e Add From Server li aggancerà alla libreria media.