🚀 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 verifica 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 risolverla attraverso 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 il file php.ini (il metodo migliore se si dispone di accesso root o VPS)

Questo è il metodo più pulito per modificare le max_input_vars se gestite il vostro 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 utenti Apache con hosting condiviso)

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

<IfModule mod_php.c>
php_value max_input_vars 3000
</IfModule>

⚠️ 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 questo potrebbe funzionare:

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

Posizionarlo sopra la riga che dice:

/* Questo è tutto, basta modificare! Buona pubblicazione. */

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

Se si utilizza un hosting condiviso con cPanel:

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

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 PHP-FPM NGINX

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:

<?php phpinfo(); ?>

Accedere al file tramite browser: https://yourdomain.com/phpinfo.php

Cercare max_input_vars e verificare che sia aggiornato.

non dimenticate di cancellare il file: 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:

max_execution_time = 300
memory_limit = 512M
post_max_size
= 64M
upload_max_filesize = 64M

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

pensieri finali

L’errore max_input_vars è facile da ignorare, ma può interrompere silenziosamente funzioni critiche di WordPress. Aumentando questo limite con il metodo giusto per il vostro ambiente, garantirete la stabilità di menu complessi, contenuti multilingue e costruttori di pagine drag-and-drop.