
🛠 Comment augmenter max_input_vars dans PHP : 3 méthodes qui fonctionnent
Vous avez configuré votre thème, ajouté une dizaine de plugins, paramétré des champs personnalisés, et voilà que WordPress refuse d’enregistrer les réglages de menu. Vous cliquez sur «Enregistrer», mais certains éléments de menu disparaissent purement et simplement.
Il ne s’agit ni d’un bug de l’interface d’administration ni d’un problème de plugin. Sur le serveur, PHP a atteint la limite de variables d’entrée max_input_vars et tronque silencieusement les données provenant du formulaire. Par défaut, cette limite est fixée à 1000, ce qui est clairement insuffisant pour une installation WordPress moderne utilisant quelques plugins lourds.
Voici trois façons d’augmenter cette limite: d’une modification rapide du fichier.htaccess jusqu’aux paramètres du panneau d’hébergement. Toutes les méthodes ont été testées sous Apache et PHP-FPM et fonctionnent de PHP 7.4 à 8.4.
Qu’est-ce que max_input_vars et comment l’erreur se manifeste-t-elle
max_input_vars est une directive PHP qui limite le nombre de variables acceptées dans les requêtes GET, POST et COOKIE. La restriction s’applique à chaque tableau superglobal séparément: les variables POST sont comptées indépendamment des variables GET et COOKIE.
Pour un petit site vitrine, un millier de variables est largement suffisant. Mais l’interface d’administration de WordPress génère des dizaines de champs pour chaque entité: éléments de menu, widgets, options du personnalisateur, metaboxes de plugins. Lorsqu’un formulaire de menu contient 80 éléments, chacun transmettant 12 à 15 variables, la limite est dépassée de manière invisible et une partie des données est perdue lors de l’enregistrement.

Les symptômes qui indiquent ce problème spécifique:
- Les éléments de menu ne s’enregistrent pas ou ne s’enregistrent que partiellement.
- Les widgets se réinitialisent spontanément et passent en inactif.
- Un plugin (comme un plugin SEO ou un constructeur de pages) perd certains réglages après l’enregistrement.
- Dans l’outil Santé du site (Outils → Santé du site → Infos → Serveur), la valeur
PHP max input variablesest égale à 1000 ou moins.
La recommandation standard de la communauté WordPress est de passer la limite à 3000. Cela suffit pour la plupart des configurations. Les sites dotés d’interfaces d’administration particulièrement lourdes (menus à plusieurs niveaux avec plus de 100 éléments, Mega Menu, dizaines de champs ACF) peuvent sans risque la fixer à 5000, voire 10000, car cela n’a pratiquement aucun impact sur les performances du serveur.
💡 Aperçu rapide:
- Vérifier la limite actuelle: phpinfo() ou Santé du site dans l’administration WordPress.
- Méthode 1: ajouter
php_value max_input_vars 3000au fichier.htaccess, fonctionne avec Apache utilisant mod_php. - Méthode 2: ajouter
max_input_vars = 3000au php.ini ou au.user.ini, adapté à PHP-FPM. - Méthode 3: modifier la valeur via le panneau d’hébergement, une option pour ceux qui n’ont pas d’accès direct aux fichiers du serveur.
Méthode 1: modifier le fichier.htaccess
Cette méthode fonctionne lorsque PHP tourne comme un module Apache (mod_php). Vous pouvez le déterminer dans Outils → Santé du site → Infos → Serveur: la ligne Server architecture contient Apache, et le gestionnaire PHP est indiqué comme un module, et non FPM/FastCGI.
Avant toute modification, faites une sauvegarde du fichier.htaccess: téléchargez-le sur votre ordinateur via FTP ou le gestionnaire de fichiers de votre hébergement. Les modifications de ce fichier sont sensibles à la syntaxe; un espace ou un saut de ligne superflu peut provoquer une erreur 500 et rendre le site inaccessible.
Ouvrez le fichier.htaccess (situé à la racine du site, à côté de wp-config.php) et ajoutez la ligne:
1 php_value max_input_vars 3000

Si le serveur a l’extension Suhosin installée (rare en 2026 mais encore présente sur certains hébergements mutualisés anciens), une seule ligne ne suffit pas. Ajoutez trois directives:
1 php_value suhosin.request.max_vars 3000 2 php_value suhosin.post.max_vars 3000 3 php_value suhosin.get.max_vars 3000
Suhosin intercepte les variables avant PHP et les tronque indépendamment de max_input_vars, d’où ce jeu de lignes supplémentaires.
Après avoir enregistré le fichier.htaccess, ouvrez l’administration WordPress → Outils → Santé du site → Infos → Serveur et vérifiez que PHP max input variables affiche la nouvelle valeur. Si elle n’a pas changé, lisez la section «Que faire si la limite ne change toujours pas» ci-dessous.
Méthode 2: modifier le fichier php.ini ou.user.ini
Sur les serveurs modernes, PHP fonctionne le plus souvent via PHP-FPM, et les directives php_value dans.htaccess sont ignorées. L’outil adapté ici est le fichier php.ini ou.user.ini.
.user.ini est traité par PHP-FPM répertoire par répertoire: le fichier est placé à la racine du site et s’applique récursivement à tous les sous-répertoires. Contrairement à .htaccess, qu’Apache lit à chaque requête, il s’agit du mécanisme standard de PHP, pris en charge depuis la version 5.3.
Créez (ou modifiez un fichier existant) .user.ini à la racine du site et ajoutez:
1 max_input_vars = 3000
Si vous avez accès au php.ini global (VPS/serveur dédié), modifiez également la valeur à cet endroit. Le chemin exact du php.ini peut être trouvé via phpinfo(): cherchez la ligne Loaded Configuration File. Après avoir modifié le php.ini, un redémarrage de PHP-FPM est nécessaire:
1 sudo systemctl restart php8.2-fpm
Remplacez le numéro de version dans la commande par le vôtre (8.1, 8.2, 8.3, 8.4). Vérifiez la nouvelle valeur via l’outil Santé du site; elle devrait se mettre à jour immédiatement.
Si le fichier .user.ini n’existe pas, créez-le simplement dans un éditeur de texte. Le nom commence par un point, il se peut donc que vous deviez activer l’affichage des fichiers cachés dans le gestionnaire de fichiers de votre hébergement.
Méthode 3: modifier la limite via le panneau d’hébergement
Pour les hébergements mutualisés (cPanel, ISPmanager, DirectAdmin), l’approche la plus simple consiste à modifier la valeur via l’interface graphique, sans toucher manuellement aux fichiers.
cPanel: allez dans Select PHP Version → passez à l’onglet Options. Trouvez la ligne max_input_vars, passez la valeur de 1000 à 3000, puis cliquez sur Save. La modification s’applique instantanément; aucun redémarrage n’est requis.
ISPmanager: section PHP → paramètres → paramètres supplémentaires → max_input_vars.
DirectAdmin: PHP Settings → trouvez la directive dans la liste → modifiez → enregistrez.
Si le panneau ne propose pas de champ max_input_vars, l’hébergement utilise un php.ini codé en dur sans droit de modification. Dans ce cas, seule une demande au support pourra vous aider: ouvrez un ticket en demandant de passer max_input_vars à 3000 (ou toute autre valeur spécifique dont vous avez besoin). La plupart des hébergeurs modifient cette limite sur simple demande; il s’agit d’une opération courante.
Que faire si la limite ne change toujours pas
Situation: les lignes dans.htaccess et.user.ini sont en place, le panneau d’hébergement affiche la nouvelle valeur, mais l’outil Santé du site montre obstinément 1000. Causes et solutions:
Mauvaise méthode de modification. max_input_vars appartient au mode PHP_INI_PERDIR: la directive ne peut être modifiée que dans php.ini,.htaccess,.user.ini ou httpd.conf. La fonction ini_set() dans wp-config.php n’a aucun effet sur elle; le code @ini_set('max_input_vars', 3000) exécute l’opération, mais PHP l’ignore silencieusement. Ne perdez pas de temps avec cette méthode.
Cache de configuration PHP. Certains panneaux (notamment cPanel avec PHP-FPM) mettent en cache les fichiers ini. Après avoir modifié.user.ini, patientez 5 minutes; c’est le temps par défaut pendant lequel PHP-FPM conserve le cache de configuration pour un répertoire donné. Vous pouvez accélérer le processus en redémarrant PHP-FPM depuis le panneau d’hébergement.
Deux fichiers php.ini. Sur un hébergement mutualisé, il y a souvent un php.ini global dans un dossier et un autre local ailleurs. PHP prend le premier qu’il trouve au démarrage. Vérifiez le chemin du Loaded Configuration File via phpinfo() et modifiez ce fichier précis. Le paramètre supplémentaire Scan this directory for additional .ini files peut également contenir la limite; vérifiez aussi ce dossier.
Limite stricte de l’hébergement. Certains fournisseurs bloquent les modifications de max_input_vars au niveau du conteneur (limites de CloudLinux avec PHP Selector). Dans phpinfo(), la directive est marquée comme no value ou n’apparaît pas du tout. Cela signifie que l’hébergement a imposé un plafond qui outrepasse les modifications utilisateur; seul un ticket au support ou un changement d’offre pourra vous aider.
⁉️🤔 Foire aux questions
Quelle valeur dois-je exactement définir: 3000 ou plus?
Pour la grande majorité des sites WordPress, 3000 suffisent. Cette valeur couvre les menus jusqu’à 120 éléments, les interfaces d’administration avec une dizaine de plugins actifs et les pages du personnalisateur comportant dix sections. Passez à 5000 si vous utilisez un Mega Menu avec plus de 150 éléments, un constructeur comme Elementor avec des centaines de champs par page, ou ACF avec des mises en page flexibles. Au-delà de 10000, seulement si le développeur du plugin le spécifie explicitement dans sa documentation.
Pourquoi la limite est-elle revenue à 1000 après une mise à jour de PHP?
La mise à jour de la version de PHP via le panneau d’hébergement réapplique souvent le php.ini par défaut. Vérifiez le fichier.user.ini et le panneau; il est fort probable que le fichier soit toujours présent, mais que l’hébergement ait basculé le pool sur une nouvelle configuration sans vos modifications.
Puis-je définir la limite via wp-config.php?
Non. La directive
max_input_varsa le modePHP_INI_PERDIRet ne peut pas être modifiée viaini_set(); PHP ignorera silencieusement un tel appel. Seuls.htaccess (sur Apache avec mod_php),.user.ini / php.ini et le panneau d’hébergement fonctionnent.
Comment savoir si le problème vient spécifiquement de max_input_vars et pas d’autre chose?
L’indicateur le plus fiable est le journal PHP. Activez
WP_DEBUGdans wp-config.php:define('WP_DEBUG', true);. Après un échec d’enregistrement de formulaire, vérifiez/wp-content/debug.log: si vous y trouvez une entréeWarning: Input variables exceeded 1000, le diagnostic est confirmé.
Que faire si mon hébergement ne me permet pas de modifier la limite?
Contactez le support en indiquant un chiffre précis (par exemple, «passer max_input_vars à 3000»). C’est une demande standard; le support y donne suite gratuitement chez la plupart des prestataires. Ils refusent dans deux cas: une offre extrêmement économique avec des limites strictement fixes (auquel cas seule une montée en gamme est possible) ou un site sur un hébergement mutualisé avec des centaines de voisins où les limites individuelles ne sont pas prises en charge architecturalement.
Résumé: quelle méthode choisir selon votre situation
Ordre des actions, de la plus simple à la plus complexe.
Si vous êtes sur un hébergement mutualisé avec cPanel, commencez par la méthode 3 (le panneau). Cela prend trois clics, et dans la plupart des cas, le problème est résolu. Si la valeur ne change pas dans l’outil Santé du site, essayez la méthode 2 via.user.ini: le fichier se place à la racine du site et est automatiquement pris en compte par PHP-FPM.
Si vous avez un VPS ou un serveur dédié avec Apache et mod_php, la méthode 1 (.htaccess) donne des résultats instantanés et ne nécessite pas de redémarrage de services. Pour une configuration Apache + PHP-FPM, utilisez la méthode 2 (php.ini ou.user.ini).
Si le panneau ne permet pas la modification, que le support ne répond pas et que la limite reste bloquée à 1000, il est possible que vous ayez dépassé les capacités de votre offre actuelle. Les configurations WordPress s’alourdissent chaque année: plus de champs, plus de données, des exigences plus élevées vis-à-vis de l’environnement serveur. Changer d’hébergement pour une offre plus flexible résout le problème de manière radicale et améliore également les performances globales du site.
Commencez par vérifier l’outil Santé du site dès maintenant: Outils → Santé du site → Infos → Serveur → PHP max input variables. S’il affiche 1000 ou moins, l’une des trois solutions ci-dessus vous rendra le contrôle de votre interface d’administration en 5 minutes.



