Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

🛠 Come aumentare max_input_vars in PHP: 3 metodi funzionanti

🛠 Come aumentare max_input_vars in PHP: 3 metodi funzionanti

Hai configurato il tema, aggiunto una dozzina di plugin, impostato campi personalizzati, e poi WordPress smette di salvare le impostazioni dei menu. Clicchi «Salva», ma alcune voci del menu spariscono semplicemente.

Non si tratta di un bug del pannello di amministrazione né di un problema di plugin. PHP sul server ha raggiunto il limite della variabile di input max_input_vars e tronca silenziosamente i dati provenienti dal form. Per impostazione predefinita, il limite è 1000, chiaramente insufficiente per una configurazione WordPress moderna con un paio di plugin pesanti.

Ecco tre modi per aumentare il limite: da una rapida modifica al file.htaccess alle impostazioni del pannello di hosting. Tutti i metodi sono stati testati su Apache e PHP-FPM e funzionano da PHP 7.4 fino alla versione 8.4.

Cos'è max_input_vars e come si manifesta l'errore

max_input_vars è una direttiva PHP che limita il numero di variabili accettate dalle richieste GET, POST e COOKIE. La restrizione si applica a ciascun array superglobale separatamente: le variabili POST vengono contate indipendentemente da GET e COOKIE.

Per un sito vetrina di piccole dimensioni, un migliaio di variabili è più che sufficiente. Ma il pannello di amministrazione di WordPress genera dozzine di campi per ogni entità: voci di menu, widget, opzioni del personalizzatore, metabox dei plugin. Quando un form di menu contiene 80 voci, ciascuna delle quali trasmette 12-15 variabili, il limite viene superato in modo invisibile e parte dei dati viene persa durante il salvataggio.

Avviso sul superamento del limite max_input_vars in WordPress

Sintomi che indicano questo problema specifico:

  • Le voci di menu non si salvano o si salvano solo parzialmente.
  • I widget si resettano spontaneamente allo stato inattivo.
  • Un plugin (come un plugin SEO o un page builder) perde alcune impostazioni dopo il salvataggio.
  • In Site Health (Strumenti → Site Health → Info → Server), il valore PHP max input variables è pari o inferiore a 1000.

La raccomandazione standard della community WordPress è di aumentare il limite a 3000. Questo è sufficiente per la maggior parte delle configurazioni. I siti con pannelli di amministrazione particolarmente pesanti (menu multilivello con oltre 100 voci, Mega Menu, dozzine di campi ACF) possono impostare tranquillamente 5000 o anche 10000, poiché ciò non ha praticamente alcun impatto sulle prestazioni del server.

💡 Panoramica rapida:

  • Verifica il limite attuale: phpinfo() o Site Health nell'amministrazione di WordPress.
  • Metodo 1: aggiungi php_value max_input_vars 3000 al tuo file.htaccess, funziona con Apache che utilizza mod_php.
  • Metodo 2: aggiungi max_input_vars = 3000 a php.ini o.user.ini, adatto per PHP-FPM.
  • Metodo 3: modifica il valore tramite il pannello di hosting, un'opzione per chi non ha accesso diretto ai file del server.

Metodo 1: modifica di.htaccess

Questo metodo funziona quando PHP viene eseguito come modulo Apache (mod_php). Puoi determinarlo in Strumenti → Site Health → Info → Server: la riga Server architecture contiene Apache e il gestore PHP è indicato come modulo, non FPM/FastCGI.

Prima di modificare, fai un backup di.htaccess: scarica il file via FTP o dal file manager del tuo hosting sul tuo computer. Le modifiche a questo file sono sensibili alla sintassi; uno spazio o un'interruzione di riga in più possono bloccare il sito con un errore 500.

Apri.htaccess (che si trova nella root del sito, accanto a wp-config.php) e aggiungi la riga:

1php_value max_input_vars 3000
Riga php_value max_input_vars aggiunta al file .htaccess

Se il server ha l'estensione Suhosin installata (raro nel 2026 ma ancora presente su alcuni hosting condivisi più datati), una sola riga non basta. Aggiungi tre direttive:

1php_value suhosin.request.max_vars 3000
2php_value suhosin.post.max_vars 3000
3php_value suhosin.get.max_vars 3000

Suhosin intercetta le variabili prima di PHP e le tronca indipendentemente da max_input_vars, da qui la necessità del set aggiuntivo di righe.

Dopo aver salvato.htaccess, apri l'amministrazione di WordPress → Strumenti → Site Health → Info → Server e verifica che PHP max input variables mostri il nuovo valore. Se non è cambiato, leggi la sezione «Cosa fare se il limite continua a non cambiare» qui sotto.

Metodo 2: modifica di php.ini o.user.ini

Sui server moderni, PHP viene eseguito più spesso tramite PHP-FPM e le direttive php_value in.htaccess vengono ignorate. Lo strumento efficace in questo caso è php.ini o.user.ini.

.user.ini viene elaborato da PHP-FPM su base per-directory: il file va posizionato nella root del sito e si applica ricorsivamente a tutte le sottodirectory. A differenza di .htaccess, che Apache legge a ogni richiesta, questo è il meccanismo standard di PHP, supportato dalla versione 5.3.

Crea (o modifica un file esistente) .user.ini nella root del sito e aggiungi:

1max_input_vars = 3000

Se hai accesso al php.ini globale (VPS/server dedicato), modifica il valore anche lì. Il percorso esatto di php.ini può essere trovato tramite phpinfo(): cerca la riga Loaded Configuration File. Dopo aver modificato php.ini, è necessario riavviare PHP-FPM:

1sudo systemctl restart php8.2-fpm

Sostituisci il numero di versione nel comando con il tuo (8.1, 8.2, 8.3, 8.4). Verifica il nuovo valore tramite Site Health; dovrebbe aggiornarsi immediatamente.

Se il file .user.ini non esiste, crealo semplicemente con un editor di testo. Il nome inizia con un punto, quindi potrebbe essere necessario abilitare la visualizzazione dei file nascosti nel file manager del tuo hosting.

Metodo 3: modifica del limite tramite il pannello di hosting

Per gli hosting condivisi (cPanel, ISPmanager, DirectAdmin), l'approccio più semplice è modificare il valore tramite l'interfaccia grafica senza toccare manualmente i file.

cPanel: vai su Seleziona versione PHP → passa alla scheda Opzioni. Trova la riga max_input_vars, modifica il valore da 1000 a 3000 e clicca Salva. La modifica si applica istantaneamente; non è necessario alcun riavvio.

ISPmanager: sezione PHP → impostazioni → parametri aggiuntivi → max_input_vars.

DirectAdmin: Impostazioni PHP → trova la direttiva nell'elenco → modifica → salva.

Se il pannello non ha un campo max_input_vars, l'hosting utilizza un php.ini predefinito senza diritti di modifica. In questo caso, solo contattare l'assistenza può aiutare: apri un ticket richiedendo di aumentare max_input_vars a 3000 (o al valore specifico di cui hai bisogno). La maggior parte degli host modifica il limite alla prima richiesta; si tratta di un'operazione di routine.

Cosa fare se il limite continua a non cambiare

Situazione: le righe in.htaccess e.user.ini sono al loro posto, il pannello di hosting mostra il nuovo valore, ma Site Health mostra ostinatamente 1000. Cause e relative soluzioni:

Metodo sbagliato per la modifica. max_input_vars appartiene alla modalità PHP_INI_PERDIR: la direttiva può essere modificata solo in php.ini,.htaccess,.user.ini o httpd.conf. La funzione ini_set() in wp-config.php non ha alcun effetto su di essa; il codice @ini_set('max_input_vars', 3000) esegue l'operazione, ma PHP la ignora silenziosamente. Non perdere tempo con questo metodo.

Cache della configurazione PHP. Alcuni pannelli (specialmente cPanel con PHP-FPM) memorizzano nella cache i file ini. Dopo aver modificato.user.ini, attendi 5 minuti; questo è il tempo per cui PHP-FPM mantiene per impostazione predefinita la cache di configurazione per una directory specifica. Puoi accelerare il processo riavviando PHP-FPM dal pannello di hosting.

Due file php.ini. Sugli hosting condivisi, spesso c'è un php.ini globale in una cartella e uno locale in un'altra. PHP carica il primo che trova all'avvio. Verifica il percorso di Loaded Configuration File tramite phpinfo() e modifica quello specifico. Anche la directory aggiuntiva Scan this directory for additional .ini files potrebbe contenere il limite; controlla anche questa cartella.

Limite rigido dell'hosting. Alcuni provider bloccano le modifiche a max_input_vars a livello di container (CloudLinux con limiti del PHP Selector). In phpinfo(), la direttiva è contrassegnata come no value o non compare affatto. Ciò significa che l'hosting ha impostato un tetto massimo al di sopra delle modifiche utente; solo un ticket di assistenza o un upgrade del piano possono aiutare.

⁉️🤔 Domande frequenti

Quanto dovrei impostare esattamente: 3000 o di più?

Per la stragrande maggioranza dei siti WordPress, 3000 è sufficiente. Questo valore copre menu fino a 120 voci, pannelli di amministrazione con una dozzina di plugin attivi e pagine del personalizzatore con dieci sezioni. Imposta 5000 se usi Mega Menu con oltre 150 voci, un builder come Elementor con centinaia di campi per pagina o ACF con layout flessibili. Sopra i 10000, solo se lo sviluppatore del plugin lo specifica esplicitamente nella documentazione.

Perché il limite è tornato a 1000 dopo un aggiornamento di PHP?

L'aggiornamento della versione PHP tramite il pannello di hosting spesso ripristina il php.ini predefinito. Controlla.user.ini e il pannello; molto probabilmente il file è ancora lì, ma l'hosting ha commutato il pool su una nuova configurazione senza le tue modifiche.

Posso impostare il limite tramite wp-config.php?

No. La direttiva max_input_vars ha modalità PHP_INI_PERDIR e non può essere modificata tramite ini_set(); PHP ignorerà silenziosamente tale chiamata. Funzionano solo.htaccess (su Apache con mod_php),.user.ini / php.ini e il pannello di hosting.

Come posso capire se il problema è specificamente max_input_vars e non qualcos'altro?

L'indicatore più preciso sono i log di PHP. Abilita WP_DEBUG in wp-config.php: define('WP_DEBUG', true);. Dopo un salvataggio fallito del form, controlla /wp-content/debug.log: se c'è una voce Warning: Input variables exceeded 1000, la diagnosi è confermata.

Cosa devo fare se il mio hosting non mi permette di modificare il limite?

Contatta l'assistenza con un numero specifico (ad esempio, "aumenta max_input_vars a 3000"). Questa è una richiesta standard; l'assistenza la soddisfa gratuitamente presso la maggior parte dei provider. Rifiutano in due casi: un piano estremamente economico con limiti rigidamente fissi (in tal caso solo un upgrade aiuta) o un sito su hosting condiviso con centinaia di vicini dove i limiti individuali non sono supportati a livello architetturale.

Riepilogo: quale metodo scegliere per la tua situazione

Ordine delle azioni, dal più semplice al più complesso.

Se sei su un hosting condiviso con cPanel, inizia con il metodo 3 (pannello). Bastano tre clic e nella maggior parte dei casi il problema è risolto. Se il valore non cambia in Site Health, prova il metodo 2 tramite.user.ini: il file va nella root del sito e viene rilevato automaticamente da PHP-FPM.

Se hai un VPS o un server dedicato con Apache e mod_php, il metodo 1 (.htaccess) dà risultati immediati e non richiede il riavvio dei servizi. Per una configurazione Apache + PHP-FPM, usa il metodo 2 (php.ini o.user.ini).

Se il pannello non consente modifiche, l'assistenza non risponde e il limite è bloccato a 1000, potresti aver superato le capacità del tuo piano attuale. Le configurazioni WordPress diventano ogni anno più pesanti: più campi, più dati, requisiti più elevati per l'ambiente server. Passare a un hosting con un piano più flessibile risolve il problema alla radice e migliora anche le prestazioni generali del sito.

Inizia subito controllando Site Health: Strumenti → Site Health → Info → Server → PHP max input variables. Se mostra 1000 o meno, una qualsiasi delle tre soluzioni sopra descritte ti restituirà il controllo sul pannello di amministrazione in 5 minuti.