🚀 Comment corriger 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 un trop grand nombre de champs de saisie – ce qui se produit souvent 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 plates-formes CMS.

Valeur par défaut :

max_input_vars = 1000

Si vous dépassez cette limite (par exemple, si vous enregistrez un menu WordPress avec 1000 éléments), PHP interrompt la saisie, et WordPress ne parvient pas à enregistrer toutes les modifications.

📌 Quand vous rencontrerez l’erreur

  • Sauvegarde de grands menus de navigation
  • Enregistrement de pages comportant de nombreux champs de formulaire
  • Utiliser des 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 modifier max_input_vars si vous utilisez votre propre serveur :

Etape 1: Localisez ou créez 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.

Étape 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. Mise à jour de .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 :


php_value max_input_vars 3000

⚠️ Cela ne fonctionne que si mod_php est activé. Certains hébergeurs utilisent PHP-FPM à la place, où 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 ce paramètre peut fonctionner:

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

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

/* C'est tout, arrêtez l'édition ! Bonne publication. */

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

Si vous utilisez un hébergement mutualisé 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 minutes si l’hôte applique les changements automatiquement).

✅ 6. Pour les serveurs NGINX PHP-FPM

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 qu’il fonctionne

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

phpinfo() ; ?>

Accès 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 entraîner 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
limite_mémoire = 512M
post_max_size = 64M
upload_max_filesize = 64M

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

🧭 Dernières réflexions

Comprendre et corriger l’erreur max_input_vars dans WordPress.L’erreur max_input_vars est un problème subtil mais potentiellement perturbateur dans WordPress qui passe souvent inaperçu – jusqu’à ce que quelque chose de critique se brise. Cette directive de configuration PHP contrôle le nombre maximum de variables d’entrée (comme les champs de formulaire ou les éléments de menu) que votre serveur traitera dans une seule requête. Si cette limite est trop basse, elle peut silencieusement empêcher certaines parties de votre site web d’enregistrer correctement les modifications, en particulier dans les environnements complexes.

Où le problème apparaît-il ?
Cette erreur apparaît généralement dans les scénarios suivants :

Menus WordPress volumineux ou imbriqués : Lors de l’élaboration de structures de menu détaillées, il se peut que seule une partie du menu soit enregistrée ou que les modifications disparaissent après l’enregistrement.

  • Sites web multilingues : Les plugins tels que WPML ou Polylang reposent fortement sur la soumission de formulaires avec un grand nombre de champs de saisie pour chaque langue.
  • Constructeurs de pages : Les outils de glisser-déposer tels que Elementor, WPBakery ou Divi peuvent rencontrer des problèmes lors de l’enregistrement de mises en page comportant de nombreux éléments ou lignes.
  • Paramètres du thème ou du plugin : Certains thèmes et plugins avec des panneaux de configuration riches peuvent ne pas enregistrer tous les paramètres correctement si la limite est dépassée.
  • Le pire ? Il n’y a souvent aucun message d’erreur visible – les modifications ne s’appliquent tout simplement pas, et vous vous demandez ce qui n’a pas fonctionné.