Aller au contenu principal

Corriger les Erreurs max_input_vars dans PrestaShop

Si vous voyez un avertissement concernant max_input_vars lors de la sauvegarde de la configuration d'un module, cela signifie que PHP reçoit plus de champs de formulaire qu'il n'est autorisé à en traiter dans une seule requête. Ce guide explique ce que cela signifie, pourquoi cela se produit et comment le corriger.

🧩 Qu'est-ce que max_input_vars ?

max_input_vars est un paramètre PHP qui limite le nombre de variables d'entrée (champs de formulaire, paramètres d'URL) que PHP acceptera dans une seule requête HTTP. La valeur par défaut est 1000.

Lorsqu'un formulaire contient plus de champs que cette limite, PHP abandonne silencieusement tout ce qui dépasse le seuil. Les champs à partir du 1001ème n'atteignent jamais le serveur — ils disparaissent simplement.


❗ Pourquoi cela se produit-il avec les formulaires de configuration de modules ?

Certains modules ont des formulaires de configuration qui génèrent de nombreux champs — notamment lorsqu'ils permettent de configurer des paramètres par catégorie, par boutique ou par langue. Dans une boutique avec un grand catalogue, le nombre de champs se multiplie rapidement :

  • Un module avec 10 paramètres × 50 catégories × 3 langues = 1 500 champs

Cela dépasse la limite par défaut de PHP de 1 000, ce qui provoque une troncature silencieuse du formulaire.

Risque de perte silencieuse de données

Avant que le module n'ajoute cet avertissement, il n'y avait aucune indication visible que des champs étaient abandonnés. Le formulaire semblait se sauvegarder normalement, mais les paramètres des catégories au-delà du seuil étaient silencieusement réinitialisés à des valeurs vides ou par défaut. Si vous avez constaté des paramètres incohérents dans votre module, cela peut en être la cause.


✅ Comment corriger le problème

Vous devez augmenter la valeur de max_input_vars dans votre configuration PHP. Une valeur de 3000–5000 est un bon choix pour la plupart des boutiques PrestaShop ; pour les très grands catalogues, utilisez une valeur plus élevée.

Option 1 — Modifier php.ini (recommandé)

Trouvez votre fichier php.ini et ajoutez ou mettez à jour la ligne suivante :

max_input_vars = 3000

Après la sauvegarde, redémarrez votre serveur web (Apache ou PHP-FPM) pour que la modification prenne effet.

Option 2 — Panneau de contrôle d'hébergement

La plupart des hébergeurs mutualisés permettent de modifier les paramètres PHP depuis le panneau de contrôle :

  1. Connectez-vous à votre panneau de contrôle (cPanel, Plesk, DirectAdmin, etc.)
  2. Trouvez la section Configuration PHP ou Paramètres PHP
  3. Localisez max_input_vars et définissez la valeur à 3000 ou plus
  4. Sauvegardez et appliquez la modification

Option 3 — .user.ini (pour les environnements PHP-FPM)

Si vous êtes sur un hébergement mutualisé utilisant PHP-FPM et que vous ne pouvez pas modifier php.ini directement, créez ou modifiez un fichier .user.ini dans le répertoire racine de votre PrestaShop :

max_input_vars = 3000

Option 4 — .htaccess (pour mod_php / Apache uniquement)

Si votre serveur utilise Apache avec mod_php (pas PHP-FPM), vous pouvez ajouter cette ligne à votre fichier .htaccess à la racine de PrestaShop :

php_value max_input_vars 3000
attention

Cette méthode fonctionne uniquement avec mod_php. Si votre serveur utilise PHP-FPM, cette ligne sera ignorée ou provoquera une erreur 500. Utilisez .user.ini à la place pour PHP-FPM.


🔍 Comment vérifier que la modification a été appliquée

Après avoir appliqué la modification, vous pouvez la vérifier :

  1. Allez dans le back office PrestaShop → Paramètres Avancés → Informations
  2. Recherchez max_input_vars dans le tableau d'informations PHP
  3. Confirmez que la valeur affiche le nombre mis à jour

💾 Après la correction — resauvegardez la configuration du module

Une fois max_input_vars augmenté :

  1. Ouvrez la page de configuration du module
  2. Vérifiez vos paramètres — tout champ qui a été silencieusement abandonné peut être vide ou incorrect
  3. Reconfigurez ce qui semble incorrect
  4. Sauvegardez la configuration

✅ Liste de Vérification Finale

  • max_input_vars augmenté à 3000 ou plus dans la configuration PHP
  • Serveur web ou PHP-FPM redémarré
  • Modification vérifiée dans le back office → Paramètres Avancés → Informations
  • Configuration du module vérifiée pour détecter les champs vides ou incorrects
  • Configuration du module sauvegardée à nouveau correctement

Qu'est-ce que max_input_vars et pourquoi affecte-t-il la configuration du module ?

max_input_vars est un paramètre PHP qui limite le nombre de champs de formulaire que PHP accepte dans une seule requête. La valeur par défaut est 1000. Les modules avec des paramètres par catégorie ou par langue peuvent générer des milliers de champs, ce qui fait que PHP supprime silencieusement tout ce qui dépasse la limite.

Comment savoir si max_input_vars empêche la sauvegarde de mes paramètres ?

Si la configuration du module semble se sauvegarder mais que certains paramètres sont toujours vides ou réinitialisés après la sauvegarde, notamment pour les catégories au-delà d'un certain point, max_input_vars est probablement la cause. Vérifiez la valeur actuelle dans le back office de PrestaShop sous Paramètres Avancés puis Informations.

Quelle valeur définir pour max_input_vars ?

Une valeur de 3000 est sûre pour la plupart des boutiques PrestaShop. Pour les catalogues très grands avec de nombreuses catégories et langues, définissez-la plus haut, comme 5000 ou plus.

Je suis sur un hébergement partagé et ne peux pas modifier php.ini. Que puis-je faire ?

Sur un hébergement partagé utilisant PHP-FPM, créez ou modifiez un fichier .user.ini dans le répertoire racine de PrestaShop et ajoutez la ligne max_input_vars = 3000. Les modifications peuvent prendre jusqu'à 5 minutes pour prendre effet. Sur un hébergement Apache avec mod_php, vous pouvez ajouter php_value max_input_vars 3000 à votre fichier .htaccess.

Après avoir augmenté max_input_vars, dois-je refaire la configuration du module ?

Oui. Ouvrez la page de configuration du module, examinez attentivement tous les paramètres pour détecter ceux qui sont vides ou incorrects suite à la perte de données silencieuse précédente, remplissez-les correctement et sauvegardez à nouveau.

🆘 Besoin d'aide ?