2010-02-26 7 views
5

Y a-t-il des limites aux arguments POST? J'ai la situation où sur le serveur de dev mon formulaire avec plus de 520 args est posté et sauvé sans problèmes, où sur la production env il économise seulement jusqu'à 499 arguments ...Limite des arguments POST en html ou php

Des idées?

Répondre

10

Je ne pense pas qu'il y ait une limite au nombre de variables envoyées par POST, juste sur leur taille accumulée. La limite varie d'un serveur à l'autre.

Mise à jour: Le Suhosin PHP hardening patch peut en fait imposer une limite au nombre de variables de requête. La valeur par défaut est 200. Suhosin est installé par défaut sur Ubuntu, donc cela pourrait être la raison de votre problème. Info avec l'aimable autorisation de @Pascal Martin, bravo!

Il y a deux facteurs à limiter la POST taille maximale:

Vous pouvez trouver sa valeur à l'aide phpinfo().

Et les limites du serveur web:

Dans votre cas, vous pouvez ajouter ce type de serveur que vous utilisez ce sur , et quelle est la taille des données. Les 520 arguments sont-ils proches de post_max_size? Que se passe-t-il si vous faites un print_r($_REQUEST) dans le script de réception?

+0

Ce genre de limite peut être implémenté par suhoshin (voir http://www.hardened-php.net/suhosin/configuration.html#suhosin.post.max_vars par exemple - mais la valeur par défaut est 200, et non 500) ;; et suhosin est installé par défaut sur Ubuntu, par exemple. –

+0

@ Pascal très bon à savoir, merci! Mise à jour de la réponse en conséquence. –

+0

vous êtes les bienvenus :-) ;;; J'ai vu suhosin causer ce genre de problèmes plus d'une fois, donc pensé que ce pourrait être une idée ;-) * (et votre réponse était déjà meilleure que ce que j'aurais posté ^^) * –

0

Je pense que la limite POST est tout ce qui est configuré dans le fichier php.ini (8M par défaut ?)

1

Oui, cela est contrôlé par la directive post_max_size, qui est 8M par défaut.

Le nombre d'arguments n'a pas d'importance, mais vous dépassez probablement la limite de votre production.

Vous pouvez exécuter ini_get ('post_max_size') dans les deux environnements pour voir s'il y a une différence.

Vous ne pouvez pas le changer d'ini_set, cependant il est possible de changer la directive de .htaccess.

2

En outre, dans le fichier PNP.INI il y a un paramètre:

max_input_vars 

qui dans ma version de PHP: 5.4.16 par défaut 1000.

A partir du manuel: "Combien de variables d'entrée peuvent être acceptées (limite est appliquée à $ _GET, $ _POST et $ _COOKIE superglobale séparément)"

Ref .: http://www.php.net/manual/en/info.configuration.php#ini.max-input-vars