Come aumentare il limite di upload in WordPress (ogni host)
Controlla il limite di upload attuale di WordPress e alzalo nel punto giusto per il tuo host: php.ini, .user.ini, .htaccess, cPanel, Nginx o Cloudflare.
Per aumentare il limite di upload in WordPress, alza due impostazioni PHP, upload_max_filesize e post_max_size, nel file di configurazione che il tuo host legge davvero. Su un server che gestisci tu è php.ini, sulla maggior parte degli hosting condivisi che usano PHP-FPM o FastCGI è .user.ini, .htaccess solo quando Apache esegue PHP come modulo, oppure il MultiPHP INI Editor in cPanel. Se il tuo server usa Nginx, alza anche client_max_body_size. Modificare wp-config.php non cambia il limite di upload.
Lo strumento per la dimensione massima di upload di WordPress trasforma una dimensione obiettivo in valori corrispondenti per php.ini (o .user.ini), .htaccess e wp-config.php, così puoi incollarli invece di scriverli a mano.
Passo 1: controlla il limite di upload attuale
Prima di cambiare qualcosa, scopri qual è il limite adesso e quale impostazione lo determina.
- Media > Aggiungi nuovo. La schermata di caricamento mostra la dimensione massima del file. È questo il numero che vuoi alzare.
- Strumenti > Salute del sito > Info. Espandi Gestione dei media. La documentazione di Salute del sito elenca cosa mostra: dimensione massima dei dati post consentita, dimensione massima di un file caricato e dimensione effettiva massima del file, cioè il più piccolo dei due valori. La sezione Server mostra altri valori PHP.


WordPress calcola il suo limite in wp_max_upload_size(), che legge upload_max_filesize e post_max_size da PHP e usa il più piccolo. Se uno è 64M e l’altro 8M, il tuo limite è 8M.
Passo 2: sapere quali impostazioni contano
| Impostazione | Cosa limita | Predefinito PHP | Dove si può cambiare |
|---|---|---|---|
upload_max_filesize | Il singolo file caricato più grande | 2M | php.ini, .user.ini, .htaccess, httpd.conf |
post_max_size | L’intera richiesta POST, file compreso | 8M | php.ini, .user.ini, .htaccess, httpd.conf |
memory_limit | La memoria che PHP può usare durante l’esecuzione | 128M | Ovunque, anche wp-config.php |
max_execution_time | I secondi per cui uno script può girare | 30 | Ovunque, anche wp-config.php |
client_max_body_size (Nginx) | Il corpo della richiesta che Nginx accetta | 1m | Solo configurazione Nginx |
I valori predefiniti di PHP e le modalità di modifica vengono dall’elenco delle direttive di php.ini; il valore predefinito di Nginx viene dalla documentazione del modulo core di Nginx. La maggior parte degli host imposta valori più alti di quelli predefiniti di PHP, ed è per questo che Salute del sito è il posto dove leggere i tuoi numeri reali.
upload_max_filesize e post_max_size sono quelle che PHP chiama impostazioni INI_PERDIR: possono essere impostate in php.ini, .htaccess, httpd.conf o .user.ini e da nessun’altra parte. memory_limit non limita la dimensione del file, ma WordPress ha bisogno di memoria per creare copie ridimensionate delle immagini grandi, quindi un caricamento grande può comunque fallire con un errore di memoria esaurita dopo essere arrivato.
Passo 3: alza il limite nel punto giusto per il tuo host
| La tua configurazione | Dove impostarlo | Note |
|---|---|---|
| VPS o server dedicato | Il php.ini che PHP carica davvero | Riavvia PHP-FPM o Apache dopo |
| Hosting condiviso con PHP-FPM o FastCGI | .user.ini nella cartella principale di WordPress | Può servire fino a 5 minuti per applicarsi |
| Apache con PHP come modulo (mod_php) | .htaccess con php_value | Causa un errore 500 con PHP-FPM o FastCGI |
| Host con cPanel | Software > MultiPHP INI Editor | Scrive php.ini, .user.ini o .htaccess al posto tuo |
| Nginx davanti a PHP | client_max_body_size oltre ai valori PHP | Altrimenti Nginx restituisce 413 |
| Hosting WordPress gestito | Il pannello dell’host o il supporto | Molti host limitano gli upload a livello di piattaforma |
| Sito dietro Cloudflare | Il limite di upload di Cloudflare | 100 MB sui piani Free e Pro |
php.ini (server che gestisci tu)
Per prima cosa trova il file caricato. Crea un file temporaneo che contiene <?php phpinfo();, aprilo nel browser, leggi la riga “Loaded Configuration File”, poi elimina il file. Modifica quel php.ini:
upload_max_filesize = 128M
post_max_size = 130M
max_execution_time = 300
Poi riavvia PHP perché legga la modifica. Con PHP-FPM il nome del servizio contiene la versione, per esempio sudo systemctl restart php8.3-fpm su Debian o Ubuntu. Con mod_php, riavvia Apache.
.user.ini (la maggior parte degli hosting condivisi)
PHP legge i file .user.ini solo quando gira come CGI o FastCGI, il che include PHP-FPM. Crea o modifica .user.ini nella cartella che contiene wp-config.php:
upload_max_filesize = 128M
post_max_size = 130M
PHP rilegge questi file ogni user_ini.cache_ttl secondi, che di default sono 300. Aspetta cinque minuti prima di concludere che non ha funzionato, oppure riavvia PHP-FPM se puoi.
.htaccess (solo Apache con mod_php)
php_value upload_max_filesize 128M
php_value post_max_size 130M
Il manuale di PHP descrive queste direttive per PHP eseguito come modulo di Apache. Se il sito mostra un 500 Internal Server Error appena salvi, PHP sta girando come FastCGI o PHP-FPM. Togli le righe e usa invece .user.ini.
MultiPHP INI Editor di cPanel
In cPanel apri Software > MultiPHP INI Editor, scegli il tuo dominio e cambia i valori in Basic Mode. Secondo la documentazione di cPanel, Basic Mode salva nei file php.ini, .user.ini e .htaccess dove ciascuno supporta l’impostazione, quindi non devi sapere quale usa il tuo server.
Nginx
Nginx controlla la dimensione della richiesta prima che PHP la veda. Quando una richiesta supera client_max_body_size, Nginx restituisce 413 Request Entity Too Large. Il valore predefinito è 1m. Aggiungi nel blocco server un valore almeno pari a post_max_size:
client_max_body_size 130M;
Verifica e ricarica con sudo nginx -t && sudo systemctl reload nginx. Su Apache l’impostazione equivalente è LimitRequestBody, che raramente va cambiata su un normale hosting WordPress.
Host gestiti e Cloudflare
Alcuni host WordPress gestiti ignorano il tuo php.ini o .user.ini e fissano il limite per tutta la piattaforma. Se Salute del sito mostra ancora il vecchio numero dopo la modifica, chiedi al tuo host qual è il massimo e se possono alzarlo.
Se il sito passa da Cloudflare, Cloudflare ha un suo limite. La sua documentazione sulla cache indica dimensioni massime di upload di 100 MB sui piani Free e Pro, 200 MB su Business e fino a 5 GB su Enterprise. Nessuna impostazione PHP può superarlo.
Perché wp-config.php non funziona
Molti articoli suggeriscono di aggiungere questo a wp-config.php:
@ini_set( 'upload_max_filesize', '128M' );
@ini_set( 'post_max_size', '130M' );
Entrambe le impostazioni sono INI_PERDIR, e la documentazione di PHP dice che le impostazioni di questa modalità non si possono impostare con ini_set(). La @ nasconde il fallimento, quindi le righe sembrano innocue e non cambiano nulla. Quello che wp-config.php può cambiare è la memoria, perché memory_limit si può impostare ovunque:
define( 'WP_MEMORY_LIMIT', '256M' );
Questo aiuta quando le immagini grandi falliscono durante l’elaborazione. Non cambia la dimensione massima del file caricabile.
Passo 4: conferma la modifica
Ricarica Media > Aggiungi nuovo e controlla che la dimensione massima del file mostri il nuovo valore. Se non è così:
- Controlla che
post_max_sizesia almeno pari aupload_max_filesize. WordPress usa il più piccolo. - Verifica di aver modificato il file che PHP carica davvero. Un
php.ininella cartella sbagliata viene ignorato. - Aspetta cinque minuti per una modifica a
.user.ini, oppure riavvia PHP-FPM. - Se il numero in WordPress è cambiato ma gli upload falliscono ancora con 413, il blocco è in Nginx, nel proxy del tuo host o in Cloudflare.
- Se l’upload arriva a WordPress e poi fallisce con “Errore HTTP”, il problema non è più la dimensione. La nostra guida all’errore HTTP durante il caricamento delle immagini in WordPress spiega le cause più comuni.
Quanto alto conviene impostarlo?
Impostalo sul file più grande che ti serve davvero caricare, con un po’ di margine, e tieni post_max_size leggermente sopra upload_max_filesize. Anche gli upload grandi richiedono più tempo, quindi alza max_execution_time se i file grandi vanno in timeout su connessioni lente. Per file molto grandi, come video lunghi o archivi di backup, caricare via SFTP o con un plugin di upload a blocchi è di solito più affidabile di un enorme caricamento dal browser, e un limite del piano Cloudflare può comunque escludere la strada del browser.
Quando conosci il tuo obiettivo, lo strumento per la dimensione massima di upload scrive per te le righe PHP corrispondenti. Aggiungi tu la riga Nginx di questa guida se il tuo server usa Nginx.
FAQ
Domande
Come controllo il limite di upload attuale in WordPress?
Vai in Media > Aggiungi nuovo. La schermata di caricamento mostra la dimensione massima del file. Per i dettagli, apri Strumenti > Salute del sito > Info ed espandi Gestione dei media, che elenca la dimensione massima di un file caricato, la dimensione massima dei dati post e la dimensione effettiva massima del file, cioè il più piccolo dei due valori.
Perché WordPress dice che il file caricato supera la direttiva upload_max_filesize in php.ini?
Il file è più grande dell'impostazione upload_max_filesize di PHP. Non è WordPress a fissare questo limite, lo legge da PHP. Alza insieme upload_max_filesize e post_max_size in php.ini, .user.ini oppure, su Apache con mod_php, .htaccess. Il valore predefinito di PHP per upload_max_filesize è solo 2M, anche se la maggior parte degli host imposta un valore più alto.
Posso aumentare il limite di upload da wp-config.php?
No. upload_max_filesize e post_max_size sono impostazioni PHP_INI_PERDIR, che PHP accetta solo da php.ini, .htaccess, httpd.conf o .user.ini. Una riga ini_set() in wp-config.php viene eseguita senza errori e non cambia nulla. wp-config.php può alzare il limite di memoria di WordPress, ma non è la memoria a limitare la dimensione del file.
Perché ricevo ancora 413 Request Entity Too Large dopo aver alzato i limiti PHP?
Qualcosa davanti a PHP sta rifiutando la richiesta. Su Nginx è client_max_body_size, che ha come valore predefinito 1m e restituisce un errore 413 quando viene superato. Alzalo nel blocco server e ricarica Nginx. Se il tuo sito passa da Cloudflare, anche il limite di upload del tuo piano può fermare la richiesta prima che arrivi al server.
post_max_size deve essere più grande di upload_max_filesize?
Deve essere almeno uguale, e un po' più grande è più sicuro. Il file viene inviato dentro una richiesta POST insieme ad altri dati del modulo, quindi tutta la richiesta conta per post_max_size. WordPress usa il più piccolo dei due valori come limite di upload, quindi alzare solo upload_max_filesize lascia il limite dov'era.