Skip to content

Tout pour WordPress, le développement web — et plus encore

🛠 Comment augmenter max_input_vars dans PHP : 3 méthodes qui fonctionnent

🛠 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.

Avertissement concernant le dépassement de la limite max_input_vars dans WordPress

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 variables est é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 3000 au fichier.htaccess, fonctionne avec Apache utilisant mod_php.
  • Méthode 2: ajouter max_input_vars = 3000 au 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:

1php_value max_input_vars 3000
Ligne php_value max_input_vars ajoutée au fichier .htaccess

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:

1php_value suhosin.request.max_vars 3000
2php_value suhosin.post.max_vars 3000
3php_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:

1max_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:

1sudo 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_vars a le mode PHP_INI_PERDIR et ne peut pas être modifiée via ini_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_DEBUG dans 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ée Warning: 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.