Otrzymuję max_input_vars
komunikat o błędzie.
Rozumiem, że istnieje php.ini
ustawienie, które może to zmienić, począwszy od wersji 5.3.9, jednak używam wersji 5.1.6.
Kiedy przeglądam informacje o konfiguracji mojego serwera 5.1.6, pokazuje, że max_input_vars
wartość wynosi 1000.
Moje pytanie brzmi: mimo że używam wersji 5.1.6, widzę to ustawienie od, phpinfo()
ale nie ma go w php.ini
pliku. Czy to oznacza, że wartość jest zakodowana na stałe w tej wersji PHP i nie można jej zmienić?
max_input_vars
w kodzie źródłowym PHP 5.1.6, więc nie jestem pewien, jak widzisz to na wyjściu phpinfo (). O ile wiem, nie istniało przed 5.3.9 ...5.1.6 -> 5.3.3
, a następnie powrocie do5.1.6
. Wyrzuciłem mnie, ponieważ ta opcja nie istnieje w5.1.6
php.ini
pliku. Dodałem linię, podniosłem numer i mój błąd / problem zniknął.Odpowiedzi:
Możesz dodać go do php.ini i powinno działać - właśnie przetestowałem go na PHP 5.3.6.
źródło
Odniesienie do sieci PHP:
http://php.net/manual/en/info.configuration.php#ini.max-input-vars
Należy pamiętać, że nie można ustawić tej dyrektywy w czasie wykonywania za pomocą funkcji
ini_set(name, newValue)
, npini_set('max_input_vars', 3000);
To nie zadziała.
Jak wyjaśniono w dokumentacji, ta dyrektywa może być ustawiona tylko dla zakresu katalogu, co oznacza poprzez plik .htaccess, httpd.conf lub .user.ini (od PHP 5.3).
Zobacz http://php.net/manual/en/configuration.changes.modes.php
Dodanie dyrektywy do php.ini lub umieszczenie następujących linii w .htaccess zadziała:
php_value max_input_vars 3000 php_value suhosin.get.max_vars 3000 php_value suhosin.post.max_vars 3000 php_value suhosin.request.max_vars 3000
źródło
max_input_vars = 3000
(+ znak równości).Właśnie wypróbowałem tę poprawkę w wersji 5.3.3 i nic się nie zmieniło. Szukając w Google, znalazłem tę stronę internetową http://anothersysadmin.wordpress.com/2012/02/16/php-5-3-max_input_vars-and-big-forms/ ze szczegółami innych ustawień, które wymagają zmiany, jeśli twój serwer używa poprawki Suhosin co robi Apache pod Debianem.
Witryna wyjaśnia:
Przetestowałem to (dodałem ustawienia do php.ini zarówno w / etc / php5 / apache2 i / etc / php5 / cli i pomyślnie zrestartowałem Apache), ale nadal nie ma zmiennej max_input_vars w phpinfo.
Kilka witryn wskazuje na PHP 5.3.9 jako pierwszą wersję PHP, w której ta zmiana zostanie wprowadzona, więc moja wina, że RTM nie działa poprawnie, chociaż interesuje mnie, jak ludzie zgłaszają, że działa w wersji powyżej 5.3.3 ale poniżej 5.3.9.
źródło
Musisz odkomentować wartość max_input_vars w pliku php.ini i zwiększyć ją (exp. 2000), również nie zapomnij zrestartować serwera, to pomoże na 99,99%.
źródło
sudo service apache2 restart
. Czy muszę ponownie uruchomić Ubuntu?;
i zmieniłem wartość na 3000. Problem prawdopodobnie dotyczył pamięci podręcznej przeglądarki. Zamknięte PHPMyAdmin i otwarte w nowej karcie i teraz działa. Dzięki!Teraz jest 2018 rok i właśnie utknąłem w tym problemie, kiedy muszę wysłać żądanie, które przekracza
max_input_vars
. I wymyśliłem rozwiązanie, w którym nowicjusz jak ja zapomniał zrestartować usługę php fpm po zmianiemax_input_vars
parametru. ponieważ próbowałem tylko zrestartowaćapache2
usługę, ale nie php fpm/etc/php/7.0/fpm/php.ini
i ustaw numer, jak chceszmax_input_vars = 4000
sudo service php7.0-fpm restart
Nadzieję, że pomoże
Testowane na
Debian Stretch
,php7.0
źródło
Korzystanie z tej dyrektywy ogranicza możliwość ataków typu „odmowa usługi”, które wykorzystują kolizje skrótów. Jeśli jest więcej zmiennych wejściowych niż określono w tej dyrektywie, generowany jest E_WARNING, a dalsze zmienne wejściowe są obcinane z żądania.
Mogę zasugerować, aby nie rozszerzać domyślnej wartości, która wynosi 1000 i rozszerzać funkcjonalność aplikacji poprzez serializację żądania lub wysyłanie żądania blokami. W przeciwnym razie możesz rozszerzyć to na wymaganą konfigurację.
Zdecydowanie musi być skonfigurowany w php.ini
źródło
Zauważ, że musisz umieścić to w pliku „.user.ini” w Centos7, a nie w „php.ini”, który działał w Centos6. Możesz umieścić plik „.user.ini” w dowolnym podkatalogu, aby wpłynąć tylko na ten katalog.
.user.ini:
max_input_vars = 3000
Testowane na Centos7 i PHP 5.6.33.
źródło
php_value max_input_vars 6000
„Umieść tę linię w pliku .htaccess swojej witryny”.
źródło
Nowy blok Cpanels, aby zobaczyć plik .htaccess lub jeśli dodasz .user.ini, nie będziesz w stanie go zobaczyć. ale przy odrobinie hackowania możesz sprawić, że to zadziała. Edytuj na przykład wp-config.php i zamień wp-config.php na .htaccess na pasku adresu. Teraz możesz wkleić wartości i zapisać je. wprowadź opis obrazu tutaj
źródło
Po prostu miałem ten sam problem z dodawaniem pozycji menu do Wordpressa. Używam Wordpress 4.9.9 na Ubuntu 18.04, PHP 7.0. Po prostu odkomentowałem następujący wiersz i zwiększyłem go do 1500 cali
/etc/php/7.0/apache2/php.ini
; How many GET/POST/COOKIE input variables may be accepted<br> max_input_vars = 1500
Następnie zastosował następujące zmiany, aby wprowadzić zmianę:
sudo apache2ctl configtest #(if it does not return ok Apache will not start) sudo service apache2 reload
Mam nadzieję, że to pomoże.
źródło
"Wiadomość PHP: PHP Ostrzeżenie: Nieznane: Zmienne wejściowe przekroczyły 1000. Aby zwiększyć limit, zmień max_input_vars w php.ini.
Ten parametr konfiguracyjny php max_input_vars wpłynie nie tylko na parametry GET / POST / COOKIES, ale także kontroluje Twoje dane wejściowe.
Aby ustawić lub zmienić jego wartość, wykonaj poniższe czynności.
1) sprawdź istniejące ustawienie / wartość, przeglądając je w pliku php.ini Zlokalizuj plik php.ini za pomocą
<?php echo getinfo(); ?>
znajdź poniżej klucz: Załadowany plik konfiguracyjny: /etc/php/5.6/fpm/php.ini
2) Otwórz plik php.ini w trybie edytowalnym i wyszukaj max_input_vars. Ta linia może być skomentowana w twoim istniejącym domyślnym ustawieniu z domyślną wartością 1000, więc usuń; aby odkomentować go i edytować go odpowiednią wartością, np. 2500.
3) Zapisz plik i uruchom ponownie usługi PHP, korzystając z poniższego
sudo service php5.6-fpm restart
Podobnie możesz zaktualizować każdą inną podobną konfigurację PHP, aby ułatwić sobie pracę.
źródło
Tylko jako uzupełnienie. Na współdzielonym serwerze korzystającym z mod_suphp miałem ten sam problem.
Zadeklarowanie 4 max_input_vars (w tym suhosin), nie rozwiązało tego, po prostu obcinało na 1000 zmiennych (domyślnie) i zadeklarowanie „php_value max_input_vars 6000” na .htaccess spowodowało błąd 500.
Rozwiązaniem było dodanie następującego elementu na .htaccess, co powoduje rekursywne zastosowanie pliku php.ini do tej ścieżki
źródło
Tak, dodaj go do php.ini, zrestartuj apache i powinno działać.
Możesz go przetestować w locie, jeśli chcesz
ini_set("max_input_vars",100)
źródło