Augmenter la limite PHP max_input_vars dans WordPress

En bref : Ajoutez php_value max_input_vars 3000 à .htaccess, définissez max_input_vars = 3000 dans php.ini ou ajoutez @ini_set('max_input_vars', 3000); à wp-config.php. Choisissez la méthode qui correspond à votre environnement d’hébergement — voir le tableau ci-dessous.

La directive max_input_vars a été introduite dans PHP comme mesure de sécurité qui limite le nombre maximal de variables POST que le serveur traite par requête. Lorsqu’une page WordPress soumet plus de variables que la limite ne l’autorise, le serveur abandonne silencieusement le surplus — ce qui fait perdre des éléments aux menus, disparaître les réglages de thème et échouer l’enregistrement des pages de configuration d’extensions.

Dans les tickets d’assistance WP STAGING, le déclencheur le plus fréquent est un site WooCommerce ou WPML avec une grande page de réglages qui abandonne silencieusement des champs à l’enregistrement.

Porter max_input_vars à 3000 ou plus résout ces symptômes dans la plupart des cas. La bonne méthode dépend de votre environnement d’hébergement. Si vous n’êtes pas sûr de celle qui s’applique, contactez votre hébergeur avant de modifier les fichiers de configuration du serveur — tous les hébergeurs mutualisés n’accordent pas la permission pour chacune des méthodes ci-dessous.

Quelle méthode devriez-vous utiliser ?

Type d’hébergement Méthode recommandée Remarques
cPanel mutualisé (Apache) Modifier .htaccess Aucun redémarrage du serveur requis
Hébergement mutualisé (nginx) php.ini ou panneau de l’hébergeur La méthode varie selon le fournisseur
WordPress infogéré (WP Engine, Kinsta, etc.) Panneau de contrôle de l’hébergeur ou support La modification directe de fichiers peut être restreinte
VPS ou serveur dédié avec SSH Modifier le php.ini global Redémarrez PHP-FPM après l’enregistrement
Géré dans le cloud (Cloudways, SpinupWP, etc.) Panneau de contrôle de l’hébergeur Chaque fournisseur expose sa propre interface de réglages

Si votre hébergeur ne prend en charge aucune des méthodes basées sur des fichiers ci-dessous, ouvrez un ticket d’assistance — augmenter max_input_vars est une demande de routine.

Comment augmenter la limite PHP Max Input Vars

Les trois méthodes les plus courantes consistent à modifier .htaccess, php.ini ou wp-config.php. Essayez-les dans l’ordre qui correspond à votre environnement d’hébergement ; ne passez à la suivante que si la première n’a aucun effet.

Méthode 1 : Modifier le fichier .htaccess

Le fichier .htaccess se trouve dans le répertoire racine de votre installation WordPress. Ouvrez-le avec votre gestionnaire de fichiers ou votre client FTP.

Augmenter Max Input Vars dans .htaccess

Si vous ne parvenez pas à localiser le fichier, la plupart des gestionnaires de fichiers d’hébergement masquent les dotfiles par défaut. Cherchez une option Afficher les fichiers cachés et activez-la.

Ouvrez .htaccess dans un éditeur de texte et ajoutez la ligne suivante :

php_value max_input_vars 3000
ajouter du code dans htaccess

Si votre serveur utilise l’extension de sécurité Suhosin, utilisez plutôt ces lignes :

php_value suhosin.request.max_vars 3000
php_value suhosin.post.max_vars 3000

Une valeur de 3000 couvre la plupart des installations WordPress avec de grands menus ou des pages de réglages d’extensions complexes. Ne l’augmentez davantage que si les symptômes persistent après l’enregistrement.

Méthode 2 : Modifier le fichier php.ini

Le fichier php.ini se trouve lui aussi dans le répertoire racine de votre installation WordPress. Si aucun fichier n’existe là, créez-en un vide.

Fichier php.ini

Ouvrez le fichier dans un éditeur de texte et ajoutez ou mettez à jour cette ligne :

max_input_vars = 3000
ajouter du code dans le fichier php.ini

Enregistrez le fichier. Si vous avez un accès shell, redémarrez PHP-FPM ou Apache pour que la valeur prenne effet immédiatement. Sur les hébergements mutualisés, la requête PHP suivante récupère automatiquement le nouveau réglage.

Méthode 3 : Modifier le fichier wp-config.php

Connectez-vous à votre panneau d’hébergement ou à votre client FTP et accédez au Gestionnaire de fichiers. Ouvrez wp-config.php à la racine de votre installation WordPress.

voir le fichier wp-config

Ajoutez la ligne suivante avant la ligne qui indique /* That's all, stop editing! */ :

@ini_set( 'max_input_vars', 3000 );
ajouter du code dans le fichier wp-config.php

Enregistrez le fichier. Cette méthode définit la limite à l’exécution de PHP et fonctionne dans les environnements d’hébergement mutualisé où vous ne pouvez pas modifier .htaccess ou php.ini directement. Vous pouvez remplacer 3000 par toute valeur dont votre site a besoin — nous recommandons 3000 ou plus pour couvrir les pages d’administration complexes.

Note sur les systèmes anciens : hébergement PHP 5

PHP 5 a atteint sa fin de vie en décembre 2018. Si votre hébergeur exécute encore PHP 5, l’approche php.ini ci-dessus s’applique, mais vous devrez peut-être aussi créer des fichiers php5.ini et user.ini dans le même répertoire avec la même directive :

max_input_vars = 3000

Contactez votre hébergeur immédiatement pour effectuer une mise à niveau — les serveurs PHP 5 ne reçoivent plus de correctifs de sécurité. Les directives de l’extension Suhosin (suhosin.get.max_vars, suhosin.post.max_vars, suhosin.request.max_vars) ne sont pertinentes que sur les serveurs où Suhosin est installé ; les serveurs PHP 8.x modernes n’en ont pas besoin.

Que faire si la solution ne fonctionne pas

Si les méthodes ci-dessus n’ont pas résolu le problème, parcourez ces vérifications avant de contacter votre hébergeur.

Le changement n’a pas persisté après l’enregistrement. Le panneau de contrôle de votre hébergeur fournit peut-être un php.ini maître qui remplace tout fichier local que vous créez. Ouvrez le panneau de configuration PHP de votre hébergeur (dans cPanel : Logiciels → Sélectionner la version de PHP → Options) et définissez-y max_input_vars directement.

La valeur est définie mais les symptômes demeurent. Une autre directive PHP peut être le véritable goulot d’étranglement. Créez un fichier temporaire à la racine de votre site contenant <?php phpinfo(); ?>, ouvrez-le dans un navigateur et recherchez max_input_vars pour confirmer que la nouvelle valeur est active. Vérifiez aussi post_max_size — s’il est inférieur aux données que soumet votre page de réglages, augmenter max_input_vars seul ne corrigera pas le problème.

phpinfo() n’affiche pas la nouvelle valeur. PHP peut charger plusieurs fichiers de configuration. La sortie de phpinfo() indique Configuration File (php.ini) Path — confirmez que vous avez modifié le fichier qui y est listé. Sur les serveurs cPanel, le php.ini actif se trouve souvent dans le répertoire personnel de l’utilisateur, et non à la racine web de WordPress.

L’approche wp-config.php n’a aucun effet. Certaines configurations de serveur désactivent ini_set() via la directive disable_functions. Dans ce cas, utilisez plutôt la méthode .htaccess ou php.ini.

Pour de l’aide sur une limite de configuration PHP connexe, voir limite de mémoire PHP dans WordPress.

La spécification officielle de cette directive figure dans le manuel PHP : max_input_vars.

Conclusion

Augmenter max_input_vars est un changement de configuration d’une seule ligne, mais le choix du bon fichier compte : .htaccess pour les hébergements Apache mutualisés, php.ini pour les environnements VPS, wp-config.php lorsque vous ne pouvez pas modifier les fichiers de configuration du serveur. Si le changement ne tient pas, c’est probablement la configuration maître de votre hébergeur qui le remplace — les étapes de dépannage ci-dessus couvrent les causes les plus fréquentes.

Sauvegardez toujours votre site avant de modifier les fichiers de configuration du serveur. Si vous avez besoin d’aide supplémentaire, notre équipe d’assistance peut vous aider.

Articles liés :

Rene Hermenau

Auteur : Rene Hermenau

À propos de l'auteur : René Hermenau est le fondateur de WP STAGING. Il travaille sur les sauvegardes WordPress, les environnements de staging, les migrations, la gestion des bases de données et les workflows de déploiement sécurisés.