I limiti PHP di caricamento e durata devono essere configurati in modo coerente. upload_max_filesize limita il singolo file, post_max_size limita l’intera richiesta POST e deve essere superiore al file, memory_limit deve lasciare memoria sufficiente allo script, mentre max_execution_time e max_input_time controllano tempi diversi.
Quando WordPress mostra “Il file supera la dimensione massima”, un’importazione si interrompe o una richiesta va in timeout, aumentare un solo valore può non bastare. Esistono inoltre limiti dell’applicazione, del web server, del proxy e del piano hosting.
Questa guida spiega upload_max_filesize, post_max_size e max_execution_time e mostra come modificarli senza scegliere valori eccessivi. La relazione upload_max_filesize post_max_size è il primo controllo da effettuare.
Significato delle principali direttive
| Direttiva | Funzione | Esempio |
|---|---|---|
upload_max_filesize | Dimensione massima di un singolo file caricato via PHP | 64M |
post_max_size | Dimensione massima dell’intera richiesta POST, file e campi compresi | 72M o superiore |
memory_limit | Memoria massima allocabile da un processo PHP | 256M |
max_execution_time | Tempo massimo di esecuzione dello script | 120 secondi |
max_input_time | Tempo massimo per analizzare i dati in ingresso | 120 secondi |
max_input_vars | Numero massimo di variabili accettate in input | 1000 o valore previsto dal sito |
I valori della tabella sono esempi, non impostazioni universali. Usa il minimo necessario per l’operazione e rispetta i limiti del piano.
Relazione tra upload_max_filesize e post_max_size
post_max_size deve essere superiore a upload_max_filesize, perché la richiesta contiene anche campi, intestazioni e talvolta più file.
Esempio per un file massimo di 64 MB:
upload_max_filesize = 64M
post_max_size = 72M
Se carichi più file nella stessa richiesta, la somma può superare post_max_size anche quando ogni file rispetta upload_max_filesize.
memory_limit deve essere maggiore del file?
Non esiste una formula unica. Uno script può salvare il file senza caricarlo interamente in memoria oppure può decomprimerlo, analizzarlo e crearne più copie. Immagini, ZIP, XML, CSV, PDF e fogli di calcolo possono richiedere molta più memoria della dimensione sul disco.
Impostare memory_limit uguale a upload_max_filesize non garantisce l’elaborazione. Osserva l’errore reale e aumenta con prudenza.
max_execution_time e max_input_time
max_input_time riguarda il tempo impiegato da PHP per ricevere e analizzare i dati di input. max_execution_time riguarda l’esecuzione dello script, con differenze possibili in base a sistema operativo e modalità PHP.
Un upload lento può inoltre essere interrotto da:
- timeout del browser o della rete;
- proxy e CDN;
- web server;
- applicazione;
- firewall;
- limite del processo PHP;
- operazione successiva al caricamento.
Aumentare max_execution_time non risolve automaticamente un timeout Cloudflare 524 o un limite imposto da un altro livello.
Come modificare i limiti PHP in cPanel
Su Xlogic i principali limiti PHP si possono modificare da cPanel → Software → Select PHP Version → Options quando il dominio utilizza CloudLinux PHP Selector e una versione Alt-PHP. Da questa schermata possono essere disponibili upload_max_filesize, post_max_size, memory_limit, max_execution_time, max_input_time e max_input_vars.
Metodo 1: Select PHP Version e scheda Options
- apri cPanel → Software → Select PHP Version;
- verifica che sia selezionata la versione PHP effettivamente usata dal sito;
- apri la scheda Options;
- individua la direttiva da modificare;
- scegli uno dei valori consentiti dall’interfaccia;
- salva oppure attendi la conferma del salvataggio automatico;
- controlla il valore effettivo nell’applicazione e ripeti il test.
I valori disponibili nella scheda Options rappresentano quelli consentiti dalla configurazione Xlogic. Non è possibile superare eventuali limiti massimi del server o del piano. Queste opzioni PHP non aumentano CPU, memoria fisica, I/O, processi o Entry Processes dell’account CloudLinux.
Metodo 2: MultiPHP INI Editor
Usa MultiPHP INI Editor quando il dominio è gestito da EA-PHP tramite MultiPHP Manager, oppure quando PHP Selector mostra native e le opzioni CloudLinux non sono applicate.
- apri cPanel → Software → MultiPHP INI Editor;
- seleziona il dominio corretto;
- usa Basic Mode quando la direttiva è disponibile;
- modifica un valore alla volta;
- salva;
- controlla il risultato nell’applicazione.
Editor Mode modifica direttamente le direttive e richiede maggiore attenzione. Un errore di sintassi può impedire l’applicazione delle impostazioni. Non configurare lo stesso parametro con valori differenti sia in Select PHP Version sia in MultiPHP INI Editor.
Metodo .user.ini
Quando previsto dalla configurazione PHP, un file .user.ini nella directory del sito può contenere:
upload_max_filesize = 64M
post_max_size = 72M
memory_limit = 256M
max_execution_time = 120
max_input_time = 120
Non creare contemporaneamente valori diversi in PHP Selector, MultiPHP INI Editor, .user.ini e wp-config.php. La presenza di più livelli rende difficile sapere quale prevale.
Come verificare i valori effettivi
In WordPress consulta Strumenti → Salute del sito → Informazioni → Server e Gestione media per il limite di upload mostrato. Il valore visualizzato dall’applicazione può essere il minimo tra più limiti.
Puoi usare temporaneamente una pagina diagnostica, ma elimina subito qualsiasi file phpinfo().
Ordine e ambito delle configurazioni
Le direttive possono essere definite a livello server, versione PHP, account, dominio e directory. Il valore effettivo dipende dal gestore PHP e dal tipo di direttiva. Per questo non è sufficiente trovare una riga in un file: bisogna controllare ciò che PHP applica realmente alla richiesta del dominio.
Quando un account contiene più siti, seleziona sempre il dominio corretto nel MultiPHP INI Editor. Un .user.ini inserito nella document root può influenzare anche sottodirectory, mentre un file collocato nel percorso sbagliato può non avere alcun effetto. Evita copie differenti della stessa direttiva.
Limiti del web server e del proxy
Anche con PHP configurato correttamente, il web server o un proxy possono rifiutare il corpo della richiesta o interrompere una connessione troppo lunga. Se il messaggio è HTTP 413, 502, 504 o Cloudflare 524, conserva codice e intestazioni: il problema potrebbe non essere una direttiva PHP.
WordPress continua a mostrare il vecchio limite
- verifica di aver selezionato il dominio corretto;
- controlla la versione PHP realmente usata;
- attendi l’aggiornamento della cache delle direttive
.user.ini; - controlla valori duplicati;
- verifica limiti imposti dall’applicazione o dal plugin;
- non confondere il limite media con quello di importazione del plugin.
Importazioni grandi: soluzione migliore del timeout enorme
Per CSV, XML e cataloghi usa lotti più piccoli, ripresa automatica e processi pianificati. Una singola richiesta web di molti minuti è fragile: può essere interrotta da rete, browser o proxy anche con PHP configurato correttamente.
Per archivi del sito utilizza strumenti di backup e ripristino progettati per operazioni lunghe, come JetBackup 5, invece di caricare manualmente file enormi attraverso WordPress.
Valori troppo alti: rischi
- processi PHP occupati per molti minuti;
- maggiore consumo di memoria per richiesta;
- raggiungimento dei limiti CloudLinux;
- code e rallentamenti per altri visitatori;
- operazioni difettose che impiegano più tempo prima di fallire;
- superficie maggiore per richieste abusive.
Non impostare timeout illimitati o memoria illimitata su un sito pubblico. Correggi l’elaborazione e usa valori proporzionati.
Errori frequenti e relativo controllo
| Messaggio | Controllo principale |
|---|---|
| File exceeds the maximum upload size | upload_max_filesize e limite applicazione |
| POST Content-Length exceeds the limit | post_max_size |
| Allowed memory size exhausted | memory_limit e causa del consumo |
| Maximum execution time exceeded | max_execution_time e operazione lenta |
| Too many input variables | max_input_vars e struttura del form |
| Gateway timeout | PHP, web server, proxy, origine e durata richiesta |
Per la memoria consulta Allowed memory size exhausted; per cambiare versione ed estensioni usa PHP Selector in cPanel.
Quando aprire un ticket Xlogic
Apri un ticket se il valore salvato non viene applicato, l’interfaccia non offre la direttiva necessaria o l’operazione continua a fallire con un errore server. Indica dominio, versione PHP, valori attuali e richiesti, file o importazione, dimensione, durata e messaggio completo.
Non inviare password o file contenenti dati personali senza accordo e canale appropriato.
Fonti tecniche ufficiali
- PHP Manual: core php.ini directives
- CloudLinux Manager: PHP Selector
- cPanel: MultiPHP INI Editor
- cPanel: Customize PHP directives
Domande frequenti sui limiti PHP
post_max_size deve essere più grande di upload_max_filesize?
Sì. La richiesta POST contiene il file e altri dati. Se i valori sono uguali, l’overhead o più file possono superare post_max_size.
Aumentare max_execution_time risolve ogni timeout?
No. Possono intervenire timeout del web server, proxy, CDN, browser o applicazione. Devi identificare il livello che interrompe la richiesta.
Perché WordPress mostra ancora il vecchio limite?
Potresti aver modificato un’altra versione PHP o un altro dominio, avere direttive duplicate oppure incontrare un limite più basso dell’applicazione o del server.
Posso impostare tutti i valori al massimo?
Non è consigliato. Valori eccessivi aumentano consumo e durata dei processi e possono portare ai limiti CloudLinux senza correggere la causa.
Qual è il metodo migliore per importazioni enormi?
Dividi il lavoro in lotti, usa ripresa e cron oppure uno strumento progettato per operazioni lunghe. Una singola richiesta web di molti minuti è poco affidabile.