web-dev-qa-db-fra.com

Comment augmenter la variable maximale POST en PHP?

J'utilise WAMP sur mon ordinateur local, lorsqu'un formulaire (méthode = "POST") comportant 2 000 champs d'entrée est soumis, je ne peux lire que la variable 1001 _POST. C'est-à-dire qu'avec le débogueur Netbeans, je peux clairement voir que la taille de _POST est toujours 1001 s'il y a plus de 1001 champs de saisie dans le formulaire.

J'ai utilisé ceci http://ideone.com/GAw14 Java pour générer un formulaire avec N champs d'entrée et testé.

La même chose fonctionne bien dans une autre machine (WAMP), où je peux voir toutes les variables POST.

Aidez-moi s'il vous plaît à résoudre mon problème.

41
Anantha Krishnan

PHP 5.3.9 a introduit l'option de configuration max_input_vars, Dont la valeur par défaut est 1000. Consultez la section Configuration d'exécution du PHP manual La valeur par défaut et le journal des modifications se trouvent en haut de la page.

La valeur peut être modifiée en mettant à jour le fichier php.ini du serveur, en ajoutant un fichier .htaccess ou en ajoutant une ligne à httpd.conf .

84
lightster

Si vous utilisez Suhosin avec Hardened PHP, il est possible que vous atteigniez une limite maximale de variables imposée. Dans votre php.ini, vous pouvez simplement ajouter

[suhosin]
suhosin.request.max_vars = 1000
suhosin.post.max_vars = 1000

en changeant 1000 à tout ce que vous voulez et redémarrez votre serveur Web.

Je suis tombé sur cela sur la page Drupal Permissions où de nombreux modules étaient installés avec un grand nombre de rôles, ce qui donnait lieu à une tonne de cases à cocher. Cela ne ferait que sauver un certain nombre d'entre elles. avant quoi que ce soit après serait simplement ignoré.

Il semble que cela ne soit probablement pas votre problème, mais comme il est fort probable que quelqu'un de l'avenir risque de trébucher à la recherche de quelque chose de ce genre, je vais y aller car il m'a fallu un temps fou pour comprendre quand j'ai été surpris. .

18
jprofitt

J'ai résolu mon problème d'entrées $ _POST max en ajoutant ce qui suit au fichier php.ini:

max_input_vars = 5000
suhosin.request.max_vars = 5000
suhosin.post.max_vars = 5000

Notez également suhosin.request.max_vars.

8
JaPeK

J'ai résolu ce problème. Ouvrez le fichier de configuration PHP.INI et ajoutez ces lignes

[suhosin]

suhosin.post.max_vars = 20000

suhosin.request.max_vars = 20000

1
Robson Mtos