Guida di risoluzione

Aumentare la dimensione massima di upload dei file in WordPress

1 maggio 2026 Aggiornato il 1 mag 2026

Trascini un video di 60MB nella libreria multimediale di WordPress, aspetti qualche secondo e ricevi uno di tre messaggi di errore: "The uploaded file exceeds the upload_max_filesize directive in php.ini", "413 Request Entity Too Large", o semplicemente "Errore HTTP" senza ulteriori spiegazioni. La soluzione è quasi sempre aumentare la dimensione massima di upload, ma come per la maggior parte degli argomenti dei limiti WordPress, non c'è solo un limite. Ce ne sono quattro, vivono in posti diversi e il più basso vince. Questa guida spiega quale limite causa quale messaggio di errore e come aumentare ciascuno nelle varie configurazioni di hosting.

Quale limite è responsabile di quale errore?

Quattro impostazioni separate possono bloccare un upload. Sapere quale ti ha colpito risparmia molto tentativi ed errori.

  • PHP upload_max_filesize. Il tetto duro sulla dimensione di un singolo file caricato. Il predefinito sulla maggior parte degli host è da 2M a 64M. Se il tuo file lo supera, WordPress mostra il messaggio esplicito "uploaded file exceeds the upload_max_filesize directive".
  • PHP post_max_size. La dimensione massima dell'intera richiesta POST, incluso il file più tutti gli altri campi del form. Deve essere almeno grande quanto upload_max_filesize; altrimenti l'upload fallisce silenziosamente prima che WordPress lo veda nemmeno. Il predefinito è solitamente da 8M a 64M.
  • PHP max_execution_time e max_input_time. Limiti di tempo in secondi. Un upload grande su una connessione lenta può raggiungere il limite di tempo prima che il file finisca di trasferirsi, anche se i limiti di dimensione sono a posto. Il predefinito è solitamente da 30 a 60 secondi. Sintomo: l'upload inizia, la barra di progresso arriva all'80%, poi fallisce con "Errore HTTP".
  • Limite della dimensione del corpo della richiesta del webserver. nginx ha una direttiva client_max_body_size (predefinito 1M, dolorosamente basso per upload multimediali). Apple raramente limita questo per impostazione predefinita, ma reverse proxy, load balancer e CDN (specialmente Cloudflare ha un limite di 100M sui piani gratuiti, 200M su Pro, 500M su Business) hanno tutti i propri limiti. Sintomo: una pagina "413 Request Entity Too Large" che non sembra affatto WordPress, perché WordPress non ha mai ricevuto la richiesta.

La vera dimensione massima di upload è la più bassa dei quattro. WordPress mostra il limite effettivo sulla pagina di upload stessa: apri Media, Aggiungi nuovo nell'admin e guarda la piccola riga "Dimensione massima file di upload" sotto l'area di upload.

Quanto ne hai davvero bisogno?

Un modello mentale pratico:

  • 32M. Sufficiente per immagini tipiche, PDF e piccoli file audio. Il predefinito sugli host condivisi conservativi.
  • 64M. Comodo per la maggior parte dei siti editoriali. Gestisce raffiche fotografiche da una fotocamera moderna, PDF più grandi e brevi clip video.
  • Da 128M a 256M. L'intervallo giusto per siti che caricano regolarmente video, file PSD grandi, asset di design o file zip di temi e plugin per un'installazione auto-gestita.
  • Sopra 256M. Particolarmente rilevante per siti pesanti di video, feed podcast con file audio grandi o piattaforme di corsi con materiale didattico scaricabile. Vale la pena chiedersi se il file deve davvero stare sul server WordPress, o se un servizio come Vimeo, YouTube, Bunny Stream o un bucket S3 dedicato si adatta meglio. WordPress non è ottimizzato per servire file multimediali grandi su larga scala.

Un dettaglio che le persone perdono: WordPress ha anche il proprio tetto interno. Per impostazione predefinita, non impone un limite di dimensione oltre quello che PHP consente, quindi sulla maggior parte degli host le impostazioni PHP sono l'unica cosa in gioco. Il filtro upload_size_limit esiste se vuoi impostare un tetto specifico per il progetto (utile in multisite per dare diversi limiti a diversi ruoli), ma può solo abbassare il limite effettivo, mai aumentarlo sopra PHP.

Opzione 1: aumentare i limiti PHP tramite il pannello del tuo host

Quasi sempre il punto di partenza giusto. La maggior parte degli host nel 2026 offre le impostazioni rilevanti nella loro dashboard, e le modifiche diventano attive in pochi secondi.

cPanel (Aruba, Hostinger, molti reseller)

Vai a MultiPHP INI Editor, seleziona il tuo dominio e regola:

  • upload_max_filesize al tuo valore obiettivo (es. 128M)
  • post_max_size allo stesso o superiore (es. 128M)
  • max_execution_time ad almeno 300 secondi per file grandi
  • max_input_time allo stesso valore
  • memory_limit a 256M o superiore (gli upload vengono brevemente caricati in memoria durante l'elaborazione)

Salva. La modifica è immediatamente attiva.

Plesk (molti host italiani)

Apri il dominio in Plesk, clicca su Impostazioni PHP, scorri fino a "Impostazioni di prestazioni e sicurezza". I campi sono gli stessi di cPanel. Salva e i valori si applicano alla prossima richiesta.

Hosting WordPress gestito (Raidboxes, Kinsta, WP Engine, Cloudways, SiteGround)

Questi host forniscono quasi sempre già valori predefiniti sensati (di solito da 64M a 128M). Se il limite è ancora troppo basso per il tuo caso d'uso, la dashboard di solito ha un cursore o un campo di input. Alcuni host (WP Engine, Pressable) limitano il massimo assoluto e richiedono un ticket di supporto sopra una certa dimensione, di solito perché la loro pipeline di upload pre-convalida i file contro un CDN. Quei ticket vengono risposti in ore, non giorni.

Opzione 2: .user.ini nella root di WordPress

Se il tuo host esegue PHP tramite FastCGI o PHP FPM (che è essenzialmente ogni host moderno), ma non offre un pannello di impostazioni, puoi mettere un file .user.ini direttamente nella cartella root di WordPress:

upload_max_filesize = 128M
post_max_size = 128M
max_execution_time = 300
max_input_time = 300
memory_limit = 256M

PHP raccoglie automaticamente .user.ini. L'unica stranezza è un tempo di cache predefinito di cinque minuti (regolato dall'impostazione user_ini.cache_ttl), quindi le modifiche non diventano sempre attive alla primissima richiesta successiva.

Verifica con la pagina Salute del sito di WordPress: Strumenti, Salute del sito, Info, Server mostra l'upload_max_filesize e post_max_size attivi. Se i valori dopo dieci minuti corrispondono ancora ai vecchi predefiniti, l'host disabilita il supporto a .user.ini o PHP gira in una modalità che lo ignora. Vai all'Opzione 3.

Opzione 3: php.ini su un server auto-gestito

Su un VPS o server dedicato dove gestisci PHP direttamente, modifica l'php.ini attivo. Trovalo con php --ini sulla riga di comando. Il percorso varia per distribuzione e versione PHP (di solito /etc/php/8.2/fpm/php.ini su Debian o Ubuntu, /etc/php.ini su CentOS o RHEL).

Regola gli stessi cinque valori come nell'Opzione 1, poi ricarica PHP FPM:

sudo systemctl reload php8.2-fpm

(Adatta il numero di versione alla tua installazione.) Su Apache con mod_php, riavvia invece Apache. La modifica è immediatamente attiva, nessuna ulteriore azione necessaria.

Opzione 4: nginx client_max_body_size

Questa è quella che cattura molte persone su nginx auto-gestito. PHP può essere configurato per accettare upload di 1GB, ma se nginx è ancora limitato a 1M (il predefinito), l'upload non raggiunge mai PHP. Il browser mostra un errore generico "413 Request Entity Too Large", spesso senza alcun indizio che nginx sia responsabile.

Aggiungi la direttiva al blocco server del tuo sito, o globalmente nel blocco http di nginx.conf:

client_max_body_size 128M;

Ricarica nginx con sudo nginx -t && sudo systemctl reload nginx. Il valore deve corrispondere o essere superiore al tuo PHP post_max_size. Non c'è alcun danno nell'impostarlo leggermente più alto; il vero limite è ancora PHP.

Opzione 5: Apache con .htaccess (obsoleto)

Su configurazioni Apache più vecchie che eseguono mod_php (raro sull'hosting moderno, comune su server datati), puoi mettere le direttive PHP direttamente in .htaccess nella root di WordPress:

php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value max_execution_time 300
php_value max_input_time 300
php_value memory_limit 256M

Se il tuo host esegue PHP tramite FastCGI o PHP FPM (che è essenzialmente ogni host moderno), questa direttiva genera un errore 500 o viene ignorata silenziosamente. Usa invece .user.ini dall'Opzione 2.

Opzione 6: quando il limite è al livello CDN o proxy

Se hai configurato PHP e il webserver per consentire upload di 256M, ma l'upload continua a fallire a, diciamo, 100M, il collo di bottiglia è da qualche parte davanti al server WordPress. Colpevoli comuni:

  • Cloudflare limita la dimensione del corpo per piano: 100M su Free, 200M su Pro, 500M su Business, 500M su Enterprise (aumentato su richiesta). Per upload più grandi, aggiorna il piano, escludi l'admin WordPress dal proxy impostando il record DNS su "Solo DNS" per /wp-admin/ tramite una Page Rule, o usa un sottodominio diretto che bypassa Cloudflare per gli upload.
  • Cloudways ha uno strato varnish con un limite predefinito basso della dimensione del corpo. La loro dashboard contiene l'impostazione sotto "Impostazioni applicazione, Configurazioni server".
  • Reverse proxy posizionati davanti a nginx (HAProxy, Traefik) hanno tutti i propri limiti di dimensione del corpo che devono essere aumentati nei rispettivi file di configurazione.
  • Alcuni firewall e plugin di sicurezza a livello WAF (Sucuri, Wordfence Premium con WAF cloud) limitano le dimensioni di upload per impostazione predefinita. Il loro pannello impostazioni ha un'opzione separata per questo.

Il trucco diagnostico: prova l'upload da dentro il server stesso con curl e un file locale. Se l'upload funziona localmente ma fallisce tramite l'URL pubblico, il limite è a uno strato proxy o CDN, non in PHP.

Come verificare che i nuovi limiti siano attivi

  1. Apri Strumenti, Salute del sito, Info nell'admin di WordPress.
  2. Espandi la sezione Server. Cerca upload_max_filesize, post_max_size, max_execution_time e memory_limit. Dovrebbero tutti riflettere i nuovi valori.
  3. Per un controllo più rapido, apri Media, Aggiungi nuovo. La riga "Dimensione massima file di upload" in fondo all'area di upload dovrebbe mostrare il nuovo limite effettivo.
  4. Prova l'upload reale che ha causato il problema. Se fallisce ancora, prendi nota del messaggio di errore esatto che ottieni; quello indica quale dei quattro limiti è ancora troppo basso.

Cosa fare quando il file è davvero troppo grande per un upload HTTP

Sopra 500M o 1GB, gli upload del browser smettono di essere pratici indipendentemente dalle impostazioni del server. La connessione TCP diventa instabile, i proxy intermedi vanno in timeout, e un singolo guasto di rete significa ricominciare. Due alternative più sensate:

  • Carica tramite SFTP e importa via WordPress. Metti il file direttamente in wp-content/uploads/ANNO/MESE/ tramite SFTP, poi usa un plugin come Add From Server o Media Sync per registrarlo nella libreria multimediale. WordPress genera i metadati e le miniature come se avessi caricato normalmente.
  • Servizi multimediali esterni. Specificamente per i video, Vimeo, Bunny Stream, Cloudflare Stream e YouTube gestiscono l'hosting e lo streaming adattivo molto meglio del core di WordPress. La maggior parte dei temi e page builder moderni li incorpora nativamente, comprese le miniature generate automaticamente. Stessa logica per audio (Soundcloud, Spotify for podcasters) e download di file grandi (S3 con un CloudFront o Bunny CDN davanti).

Ospitare un video grezzo di 5GB su hosting WordPress condiviso e servirlo direttamente è tecnicamente possibile ma raramente la scelta giusta. I costi di banda, la mancanza di bitrate adattivo e il carico su un worker PHP per spettatore simultaneo indicano tutti verso l'hosting multimediale dedicato.

Errori comuni da evitare

  • Aumentare upload_max_filesize senza aumentare contemporaneamente post_max_size. L'upload fallisce silenziosamente perché l'intera richiesta POST supera il più basso dei due. Cambiali sempre insieme.
  • Impostare valori assurdamente alti "per sicurezza". Un limite di upload di 4G su un server con 4GB totali di RAM è un vettore di denial-of-service. PHP carica parti dell'upload in memoria durante l'elaborazione. Scegli un valore che rifletta ciò che effettivamente carichi, più un margine.
  • Dimenticare max_execution_time. Un upload di 500MB su una connessione a 10 Mbit/s richiede circa sette minuti. Se max_execution_time è il predefinito di 30 secondi, la richiesta viene interrotta a metà dell'upload indipendentemente dai limiti di dimensione.
  • Modificare il php.ini sbagliato. Un errore comune sui sistemi con più versioni PHP installate (es. sia 7.4 sia 8.2 presenti, ma solo una attiva). Il comando php --ini sulla riga di comando può puntare a un php.ini diverso da quello che PHP FPM usa per il webserver. Salute del sito è la fonte autoritativa.

Per la maggior parte dei casi, due minuti nel pannello dell'host aumentando cinque valori a predefiniti sensati risolvono il problema permanentemente. I messaggi di errore relativi ai limiti di dimensione di upload sono purtroppo formulati in modo da suonare come problemi tecnici oscuri, ma la vera soluzione è meccanica e ben documentata. Una volta che i limiti sono allineati al tuo vero carico di lavoro, questo è uno degli argomenti WordPress che non deve più riemergere.

Controlla subito il tuo sito WordPress

InspectWP analizza il tuo sito WordPress per problemi di sicurezza, problemi SEO, conformità GDPR e prestazioni — gratuitamente.

Analizza gratis il tuo sito