🚀 Come risolvere l’errore “PHP Max Input Vars Limit” in WordPress

Se state costruendo o gestendo un sito WordPress e improvvisamente incontrate l’errore:

“Attenzione: Raggiunto il limite massimo di input vars”
oppure
“Aumenta max_input_vars a un valore più alto”

… significa che il vostro server sta bloccando il PHP nell’elaborazione di troppi campi di input – spesso si vede quando si salvano menu di grandi dimensioni, costruttori di pagine (come Elementor o WPBakery) o invii di moduli.

In questo articolo avanzato tratteremo:

  • ✅ Cos’è la direttiva max_input_vars
  • 🧠 Come influisce su WordPress
  • 🔧 Come risolvere il problema con diversi metodi (php.ini, .htaccess, wp-config, Nginx, cPanel, ecc.)
  • 🔐 Migliori pratiche e considerazioni sulla sicurezza

🔍 Cos’è max_input_vars?

max_input_vars è una direttiva PHP che limita il numero di variabili di input che PHP può accettare (tramite POST, GET e REQUEST). Questo protegge il server da attacchi hashing denial-of-service, ma influisce anche sulle operazioni legittime nelle piattaforme CMS.

Valore predefinito:

max_input_vars = 1000

Se si supera questo limite (ad esempio salvando un menu di WordPress con 1000 voci), PHP interrompe l’input e WordPress non riesce a salvare tutte le modifiche.

📌 Quando si verifica l’errore

  • Salvataggio di menu di navigazione di grandi dimensioni
  • Salvataggio di pagine con molti campi modulo
  • Utilizzo di page builder con layout complessi
  • Plugin come WPML, Elementor e WooCommerce

🛠️ Correggere l’errore: 6 metodi comprovati

✅ 1. Modificare php.ini (il metodo migliore se si dispone di accesso root o VPS)

Questo è il modo più pulito per cambiare le max_input_vars se si gestisce un proprio server:

Passo 1: Individuare o creare un file php.ini (dipende dal server):

sudo nano /etc/php/8.2/apache2/php.ini

Sostituire 8.1 con la propria versione di PHP.

Passo 2: trovare e modificare la direttiva:

max_input_vars = 3000

Passo 3: riavviare il server web:

sudo systemctl restart apache2

oppure

sudo systemctl restart php8.2-fpm

✅ 2. Aggiornare .htaccess (per gli utenti Apache con hosting condiviso)

Se non riuscite ad accedere a php.ini, provate a modificare .htaccess nella root della vostra installazione di WordPress:


php_value max_input_vars 3000

⚠️ Questo funziona solo se mod_php è abilitato. Alcuni host utilizzano invece PHP-FPM, dove questo metodo non funziona.

✅ 3. Utilizzare wp-config.php (non sempre efficace)

WordPress non supporta in modo nativo la sovrascrittura di max_input_vars, ma in alcune configurazioni l’aggiunta di questa opzione potrebbe funzionare:

@ini_set('max_input_vars', '3000');

Posizionarlo sopra la riga che dice:

/* È tutto, basta con l'editing! Buona pubblicazione. */

✅ 4. Modificare il php.ini o il php_value dell’utente in cPanel

Se si utilizza un hosting condiviso con cPanel:

  • Andare su cPanel > Selezionare la versione PHP > Opzioni
  • Cercare max_input_vars e aumentarlo a 3000 o più
  • Salvare e controllare phpinfo() per conferma

funziona immediatamente, senza bisogno di riavviare.

✅ 5. Utilizzare .user.ini (per ambienti PHP-FPM o CGI)

Creare o modificare .user.ini nella cartella principale di WordPress:

max_input_vars = 3000

Quindi riavviare PHP (o attendere 5 minuti se l’host applica le modifiche automaticamente).

✅ 6. Per i server NGINX PHP-FPM

NGINX non usa .htaccess, quindi configurare PHP tramite il pool FPM o php.ini.

Modificare /etc/php/8.1/fpm/php.ini:

max_input_vars = 3000

Quindi riavviare:

sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx

🧪 Come confermare che sta funzionando

Creare un file phpinfo.php nella root di WordPress:

phpinfo(); ?>

Accedere via browser: https://yourdomain.com/phpinfo.php

Cercare max_input_vars e verificare che sia aggiornato.

non dimenticate di cancellare il file dopo, perché espone informazioni sensibili sul server.

🛡️ Migliori pratiche

RaccomandazioniMotivo
Non impostare max_input_vars a 999999Può portare a vulnerabilità DoS
Limitarsi a 3000-5000Abbastanza per i grandi menu/costruttori di pagine
Monitorare i limiti di memoriaGrandi vars di input = maggiore utilizzo di memoria
Usare phpinfo() o ini_get() per il debugEvitare le congetture

💡 Bonus: aumentare altri limiti correlati

A volte questo problema è accompagnato da altri limiti che vengono colpiti:

max_execution_time = 300
limite di memoria = 512M
post_max_size = 64M
upload_max_filesize = 64M

Questi possono anche essere inseriti in php.ini, .htaccess o .user.ini.

pensieri finali

Capire e risolvere l’errore max_input_vars in WordPress.L’errore max_input_vars è un problema sottile ma potenzialmente dannoso in WordPress che spesso passa inosservato, finché non si rompe qualcosa di critico. Questa direttiva di configurazione PHP controlla il numero massimo di variabili di input (come i campi dei moduli o le voci dei menu) che il vostro server elaborerà in una singola richiesta. Se questo limite è troppo basso, può impedire silenziosamente a parti del vostro sito web di salvare correttamente le modifiche, soprattutto in ambienti complessi.

Dove si manifesta il problema
Questo errore si presenta in genere nei seguenti scenari:

Menu di WordPress grandi o annidati: Quando si creano strutture di menu dettagliate, è possibile che solo una parte del menu venga salvata o che le modifiche scompaiano dopo il salvataggio.

  • Siti web multilingue: Plugin come WPML o Polylang si basano molto sull’invio di moduli con un gran numero di campi di input per ogni lingua.
  • Costruttori di pagine: Strumenti drag-and-drop come Elementor, WPBakery o Divi possono avere problemi quando si salvano layout con molti elementi o righe.
  • Impostazioni del tema o del plugin: Alcuni temi e plugin con ricchi pannelli di configurazione potrebbero non salvare correttamente tutte le impostazioni se si supera il limite.
  • La cosa peggiore? Spesso non c’è un messaggio di errore visibile: le modifiche non vengono applicate e ci si chiede cosa sia andato storto.