2012-02-22 9 views
33

Używam WAMP na moim komputerze lokalnym, gdy FORMULARZ (method = "POST") z 2000 pól wejściowych jest przesłany Jestem w stanie odczytać tylko zmienną 1001 _POST. np. z debuggerem Netbeans wyraźnie widzę, że rozmiar _POST wynosi zawsze 1001, jeśli w formularzu jest więcej niż 1001 pól wejściowych.Jak zwiększyć maksymalną wartość zmiennej POST w PHP?

Użyłem tego kodu java http://ideone.com/GAw14 do wygenerowania formularza z N pól wejściowych i przetestowane.

To samo działa dobrze na innym komputerze (WAMP), gdzie widzę wszystkie zmienne POST.

Proszę, pomóż mi rozwiązać mój problem.

+1

Dlaczego nie wziąć php.ini z innego komputera i porównać go z bieżącym komputerem i zobaczyć, co należy umieścić w zmiennych "post_max_size"? –

+0

Używasz Suhosin (Hardened PHP)? – jprofitt

+0

Nie wiem, czy to php czy przeglądarka internetowa ograniczająca ... –

Odpowiedz

76

PHP 5.3.9 wprowadzono opcję max_input_vars config, który jest domyślnie na wartość 1000. Sprawdź sekcji Runtime Configuration podręcznika PHP. Wartość domyślna i dziennik zmian znajdują się u góry strony.

Wartość można zmienić, aktualizując plik php.ini serwera, dodając plik .htaccess lub adding a line to httpd.conf.

+0

Idealne! Dzięki. Masz rację :) –

+1

Kredyt trafia do współpracownika, który miał ten problem zaledwie wczoraj, a następnie był na tyle miły, aby podzielić się swoimi odkryciami z zespołem :) – lightster

+1

Dla kogoś, kto szuka w przyszłości, stwierdziłem, że domyślny serwer cPanel od 2013-03-15 ograniczył liczbę zmiennych wejściowych do 512. Niektóre z naszych skryptów przekazały znacznie więcej i dodały max_input_vars do php .ini naprawił problem. –

-1

Podejrzewam, że problem dotyczy ilości danych przesyłanych wraz z żądaniem POST. Nie ma ustawienia, które ogranicza liczbę zmiennych $ _POST, które można ustawić. Istnieje jednak limit pamięci dla danych POST, który domyślnie wynosi 8 MB.

W pliku php.ini spróbuj zmodyfikować wartość post_max_size i ustawić ją na wyższą wartość. Nie zapomnij ponownie uruchomić Apache po wprowadzeniu zmiany.

+0

Zmodyfikowałem post_max_size na 81M również 0 i zrestartowałem WAMP, wciąż istnieje problem. –

17

Jeśli używasz Suhosin z Hardened PHP, możesz trafić do maksymalnego limitu zmiennych, który narzuca. W pliku php.ini, można po prostu dodać

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

zmieniając 1000 do tego, co chcesz i ponownie uruchomić serwer WWW.

Wpadłem na to na stronie uprawnień Drupala, gdy było wiele modułów zainstalowanych z dużą liczbą ról, co zaowocowało mnóstwem pól wyboru. Oszczędziłoby to tylko pewną ich liczbę, zanim cokolwiek po tym zostanie zignorowane.

Wygląda na to, że to prawdopodobnie nie jest twój problem, ale ponieważ jest całkiem prawdopodobne, że ktoś może w przyszłości natknąć się na to, szukając czegoś związanego, pójdę do przodu i wrzucę to, ponieważ zajęło mi wieki, aby wymyślić kiedy byłem zakłopotany.

+0

Dzięki. Nie używam Suhosina. –

+1

Nie ma suhosin dla php5.4 lub php5.5 :( – ZiTAL

0

Rozwiązałem ten problem. Otwórz plik konfiguracyjny php.ini i dodać te linie

[suhosin]

suhosin.post.max_vars = 20000

suhosin.request.max_vars = 20000

3

mi rozwiązać mój $ _POST max wejścia -problem przez dodanie następujących do php.ini:

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

Zanotuj suhosin.request.max_vars również.

+0

'max_input_vars' idealnie pasowało do mojego przypadku :) – Vineet

Powiązane problemy