🚀 Comment réparer l’erreur “PHP Max Input Vars Limit” dans WordPress

Si vous construisez ou gérez un site WordPress et que vous rencontrez soudainement l’erreur :

“Warning : Max Input Vars limit reached”
ou
“Augmentez la valeur de max_input_vars”

…cela signifie que votre serveur empêche PHP de traiter trop de champs de saisie – ce qui est souvent le cas lors de l’enregistrement de grands menus, de constructeurs de pages (comme Elementor ou WPBakery), ou de soumissions de formulaires.

Dans cet article avancé, nous allons couvrir :

  • ✅ Ce qu’est la directive max_input_vars
  • 🧠 Comment elle affecte WordPress
  • 🔧 Comment la corriger via plusieurs méthodes (php.ini, .htaccess, wp-config, Nginx, cPanel, etc.)
  • 🔐 Meilleures pratiques et considérations de sécurité

🔍 Qu’est-ce que max_input_vars ?

max_input_vars est une directive PHP qui limite le nombre de variables d’entrée que PHP peut accepter (via POST, GET et REQUEST). Cela protège le serveur contre les attaques par déni de service par hachage, mais affecte également les opérations légitimes dans les plateformes CMS.

Valeur par défaut :

max_input_vars = 1000

Si vous dépassez cette limite (par exemple, enregistrer un menu WordPress avec 1000 éléments), PHP coupe l’entrée, et WordPress échoue silencieusement à enregistrer toutes les modifications.

📌 Quand vous rencontrerez l’erreur

  • Sauvegarde de grands menus de navigation
  • Sauvegarde de pages avec de nombreux champs de formulaire
  • Utilisation de constructeurs de pages avec des mises en page complexes
  • Plugins comme WPML, Elementor, WooCommerce

🛠️ Corriger l’erreur : 6 méthodes éprouvées

✅ 1. Modifier php.ini (Meilleure méthode si vous avez un accès root ou VPS)

C’est la façon la plus propre de changer max_input_vars si vous utilisez votre propre serveur :

Etape 1: Localiser ou créer un fichier php.ini (en fonction du serveur) :

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

Remplacez 8.1 par votre version de PHP.

Etape 2: Trouvez et éditez la directive :

max_input_vars = 3000

Étape 3: Redémarrez votre serveur web :

sudo systemctl restart apache2

ou

sudo systemctl restart php8.2-fpm

✅ 2. Mettre à jour .htaccess (pour les utilisateurs d’Apache avec un hébergement mutualisé)

Si vous ne pouvez pas accéder à php.ini, essayez de modifier .htaccess à la racine de votre installation WordPress :

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

⚠️ Cela ne fonctionne que si mod_php est activé. Certains hébergeurs utilisent PHP-FPM à la place, et cette méthode ne fonctionnera pas.

✅ 3. Utiliser wp-config.php (pas toujours efficace)

WordPress ne supporte pas nativement la surcharge de max_input_vars, mais dans certaines configurations, l’ajout de ceci peut fonctionner:

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

Placez-la au-dessus de la ligne qui dit :

/* That's all, stop editing! Happy publishing. */

✅ 4. Modifier l’utilisateur php.ini ou php_value dans cPanel

Si vous utilisez un hébergement partagé avec cPanel :

  • Allez dans cPanel > Sélectionnez la version de PHP > Options
  • Cherchez max_input_vars et augmentez-le à 3000 ou plus
  • Sauvegardez et vérifiez phpinfo() pour confirmer

fonctionne instantanément – aucun redémarrage n’est nécessaire.

✅ 5. Utiliser .user.ini (pour les environnements PHP-FPM ou CGI)

Créez ou éditez le fichier .user.ini dans le dossier racine de WordPress :

max_input_vars = 3000

Redémarrez ensuite PHP (ou attendez 5 min si l’hébergeur applique les changements automatiquement).

✅ 6. Pour les serveurs PHP-FPM de NGINX

NGINX n’utilise pas .htaccess, il faut donc configurer PHP via le pool FPM ou php.ini.

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

max_input_vars = 3000

Puis redémarrez :

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

🧪 Comment confirmer que cela fonctionne

Créez un fichier phpinfo.php à la racine de votre WordPress :

<?php phpinfo(); ?>

Accédez-y via un navigateur : https://yourdomain.com/phpinfo.php

Recherchez max_input_vars et vérifiez qu’il est mis à jour.

n’oubliez pas de supprimer le fichier par la suite – il expose des informations sensibles sur le serveur.

🛡️ Meilleures pratiques

RecommandationRaison
Ne pas définir max_input_vars à 999999Peut conduire à des vulnérabilités DoS
S’en tenir à 3000-5000Suffisant pour les grands menus/constructeurs de pages
Surveiller les limites de mémoireGrandes variables d’entrée = plus d’utilisation de la mémoire
Utiliser phpinfo() ou ini_get() pour déboguerÉviter les devinettes

💡 Bonus : Augmenter les autres limites associées

Parfois, ce problème s’accompagne de l’atteinte d’autres limites :

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

Ces paramètres peuvent également être placés dans php.ini, .htaccess ou .user.ini.

réflexions finales

L’erreur max_input_vars est facile à manquer mais peut briser silencieusement des fonctionnalités critiques de WordPress. En augmentant cette limite via la bonne méthode pour votre environnement, vous assurez la stabilité des menus complexes, du contenu multilingue et des constructeurs de pages par glisser-déposer.