2010-02-26 15 views
5

czy istnieje limit argumentów POST? Mam sytuację, w której na serwerze dev moja forma z ponad 520 argumentami jest publikowana i zapisywana bez problemów, gdzie w środowisku produkcyjnym zapisuje tylko do 499 argumentów ...Limit argumentów POST w html lub php

Jakieś pomysły?

Odpowiedz

10

Nie sądzę, nie ma ograniczeń co do liczbyzmiennych wysyłanych przez POST, tylko na ich wielkość zgromadzonego . Limit może się różnić w zależności od serwera.

Aktualizacja: Suhosin PHP hardening patch może bowiem nałożyć ograniczenie liczby zmiennych żądania. Wartością domyślną jest 200. Suhosin jest domyślnie instalowany w systemie Ubuntu, więc może to być przyczyną problemu. Dzięki uprzejmości @Pascal Martin, okrzyki!

Istnieją dwa czynniki do ograniczania POST Maksymalny rozmiar:

można dowiedzieć się jego wartość za pomocą phpinfo().

i ogranicza serwer WWW:

W Twoim konkretnym przypadku, może warto dodać, jaki rodzaj serwera używasz tego na i jak duże są dane. Czy argumenty 520 są bliskie post_max_size? Co się stanie, jeśli wykonasz print_r($_REQUEST) w skrypcie odbierającym?

+0

Tego rodzaju ograniczenie może być implementowane przez suhoshin (zobacz na przykład http://www.hardened-php.net/suhosin/configuration.html#suhosin.post.max_vars - ale domyślną wartością jest 200, a nie 500); i suhosin jest instalowany domyślnie na przykład w systemie Ubuntu. –

+0

@Pascal bardzo dobrze wiedzieć, dziękuję! Odpowiednio aktualizując odpowiedź. –

+0

zapraszamy :-) ;;; Zauważyłem, że suhosin powoduje tego rodzaju problemy więcej niż kilka razy, więc pomyślałem, że to może być pomysł ;-) * (a twoja odpowiedź była już lepsza niż to, co bym napisała ^^) * –

0

myślę limit POST jest cokolwiek jest skonfigurowany w php.ini (8M przez domyślne?)

1

Tak, ta jest kontrolowana przez dyrektywę post_max_size, który jest domyślnie 8M.

Liczba argumentów nie ma znaczenia, ale prawdopodobnie przekroczysz limit w swojej produkcji.

Możesz uruchomić ini_get ("post_max_size") w obu środowiskach, aby zobaczyć, czy istnieje różnica.

Nie można go zmienić z ini_set, jednak istnieje możliwość zmiany dyrektywy z pliku .htaccess.