Vai al contenuto
Configurazione

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.

Pubblicato Aggiornato

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.
Schermata Upload Media di WordPress con la riga Maximum upload file size: 2 GB sotto l'area di caricamento
Dove appare il limite nella schermata di caricamento, sotto l’area di caricamento. I 2 GB sono il valore del nostro server di prova; molti hosting impostano molto meno.
Site Health Info di WordPress, sezione Media Handling, con le righe max size of post data allowed, max size of an uploaded file e max effective file size
Strumenti > Salute del sito > Info > Gestione dei media sul nostro sito di prova, con i limiti dei dati POST, del file caricato e quello effettivo su righe separate.

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

ImpostazioneCosa limitaPredefinito PHPDove si può cambiare
upload_max_filesizeIl singolo file caricato più grande2Mphp.ini, .user.ini, .htaccess, httpd.conf
post_max_sizeL’intera richiesta POST, file compreso8Mphp.ini, .user.ini, .htaccess, httpd.conf
memory_limitLa memoria che PHP può usare durante l’esecuzione128MOvunque, anche wp-config.php
max_execution_timeI secondi per cui uno script può girare30Ovunque, anche wp-config.php
client_max_body_size (Nginx)Il corpo della richiesta che Nginx accetta1mSolo 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 configurazioneDove impostarloNote
VPS o server dedicatoIl php.ini che PHP carica davveroRiavvia PHP-FPM o Apache dopo
Hosting condiviso con PHP-FPM o FastCGI.user.ini nella cartella principale di WordPressPuò servire fino a 5 minuti per applicarsi
Apache con PHP come modulo (mod_php).htaccess con php_valueCausa un errore 500 con PHP-FPM o FastCGI
Host con cPanelSoftware > MultiPHP INI EditorScrive php.ini, .user.ini o .htaccess al posto tuo
Nginx davanti a PHPclient_max_body_size oltre ai valori PHPAltrimenti Nginx restituisce 413
Hosting WordPress gestitoIl pannello dell’host o il supportoMolti host limitano gli upload a livello di piattaforma
Sito dietro CloudflareIl limite di upload di Cloudflare100 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_size sia almeno pari a upload_max_filesize. WordPress usa il più piccolo.
  • Verifica di aver modificato il file che PHP carica davvero. Un php.ini nella 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.