Zwiększanie limitu PHP max_input_vars w WordPressie

W skrócie: Dodaj php_value max_input_vars 3000 do .htaccess, ustaw max_input_vars = 3000 w php.ini lub dodaj @ini_set('max_input_vars', 3000); do wp-config.php. Wybierz metodę pasującą do Twojego środowiska hostingowego — zobacz tabelę poniżej.

Dyrektywa max_input_vars została wprowadzona w PHP jako środek bezpieczeństwa, który ogranicza maksymalną liczbę zmiennych POST przetwarzanych przez serwer na żądanie. Gdy strona WordPress przesyła więcej zmiennych, niż pozwala limit, serwer po cichu odrzuca nadmiar — przez co menu tracą pozycje, ustawienia motywu znikają, a strony konfiguracji wtyczek nie zapisują się.

W zgłoszeniach do pomocy technicznej WP STAGING najczęstszym wyzwalaczem jest witryna z WooCommerce lub WPML z dużą stroną ustawień, która po cichu odrzuca pola przy zapisie.

Podniesienie max_input_vars do 3000 lub więcej rozwiązuje te objawy w większości przypadków. Właściwa metoda zależy od Twojego środowiska hostingowego. Jeśli nie masz pewności, która ma zastosowanie, skontaktuj się ze swoim dostawcą hostingu, zanim zaczniesz edytować pliki konfiguracyjne serwera — nie wszyscy hości współdzieleni udzielają zgody na każdą z poniższych metod.

Której metody użyć?

Typ hostingu Zalecana metoda Uwagi
Współdzielony cPanel (Apache) Edycja .htaccess Nie wymaga restartu serwera
Hosting współdzielony (nginx) php.ini lub panel hosta Metoda zależy od dostawcy
Zarządzany WordPress (WP Engine, Kinsta itd.) Panel sterowania hosta lub wsparcie Bezpośrednia edycja plików może być ograniczona
VPS lub serwer dedykowany z SSH Edycja globalnego php.ini Po zapisaniu zrestartuj PHP-FPM
Zarządzany w chmurze (Cloudways, SpinupWP itd.) Panel sterowania hosta Każdy dostawca udostępnia własny interfejs ustawień

Jeśli Twój host nie obsługuje żadnej z poniższych metod opartych na plikach, otwórz bilet wsparcia — podniesienie max_input_vars to rutynowa prośba.

Jak zwiększyć limit PHP Max Input Vars

Trzy najczęstsze metody to edycja .htaccess, php.ini lub wp-config.php. Wypróbuj je w kolejności pasującej do Twojego środowiska hostingowego; przejdź do następnej tylko wtedy, gdy pierwsza nie przynosi efektu.

Metoda 1: Edycja pliku .htaccess

Plik .htaccess znajduje się w katalogu głównym Twojej instalacji WordPress. Otwórz go za pomocą menedżera plików lub klienta FTP.

Zwiększanie Max Input Vars w .htaccess

Jeśli nie możesz zlokalizować pliku, większość hostingowych menedżerów plików domyślnie ukrywa pliki kropkowe. Poszukaj opcji Pokaż ukryte pliki i włącz ją.

Otwórz .htaccess w edytorze tekstu i dodaj następujący wiersz:

php_value max_input_vars 3000
dodawanie kodu w htaccess

Jeśli Twój serwer używa rozszerzenia zabezpieczającego Suhosin, użyj zamiast tego tych wierszy:

php_value suhosin.request.max_vars 3000
php_value suhosin.post.max_vars 3000

Wartość 3000 pokrywa większość instalacji WordPress z dużymi menu lub złożonymi stronami ustawień wtyczek. Zwiększ ją dalej tylko wtedy, gdy objawy utrzymują się po zapisie.

Metoda 2: Edycja pliku php.ini

Plik php.ini również znajduje się w katalogu głównym Twojej instalacji WordPress. Jeśli nie ma tam żadnego pliku, utwórz pusty.

Plik php.ini

Otwórz plik w edytorze tekstu i dodaj lub zaktualizuj ten wiersz:

max_input_vars = 3000
dodawanie kodu w pliku php.ini

Zapisz plik. Jeśli masz dostęp do powłoki, zrestartuj PHP-FPM lub Apache, aby wartość zaczęła obowiązywać natychmiast. Na hostach współdzielonych następne żądanie PHP automatycznie pobiera nowe ustawienie.

Metoda 3: Edycja pliku wp-config.php

Zaloguj się do panelu hostingowego lub klienta FTP i przejdź do Menedżera plików. Otwórz wp-config.php w katalogu głównym swojej instalacji WordPress.

wyświetlanie pliku wp-config

Dodaj następujący wiersz przed wierszem /* That's all, stop editing! */:

@ini_set( 'max_input_vars', 3000 );
dodawanie kodu w pliku wp-config.php

Zapisz plik. Ta metoda ustawia limit w czasie wykonywania PHP i działa w środowiskach hostingu współdzielonego, w których nie możesz bezpośrednio modyfikować .htaccess ani php.ini. Możesz zastąpić 3000 dowolną wartością, której wymaga Twoja witryna — zalecamy 3000 lub więcej, aby pokryć złożone strony administracyjne.

Uwaga dotycząca starszych systemów: hosting z PHP 5

PHP 5 zakończyło cykl życia w grudniu 2018 roku. Jeśli Twój host nadal działa na PHP 5, podejście z php.ini powyżej ma zastosowanie, ale możesz też potrzebować utworzyć pliki php5.ini i user.ini w tym samym katalogu z tą samą dyrektywą:

max_input_vars = 3000

Skontaktuj się ze swoim hostem natychmiast w sprawie aktualizacji — serwery z PHP 5 nie otrzymują już poprawek zabezpieczeń. Dyrektywy rozszerzenia Suhosin (suhosin.get.max_vars, suhosin.post.max_vars, suhosin.request.max_vars) są istotne tylko na serwerach z zainstalowanym Suhosin; nowoczesne serwery z PHP 8.x ich nie wymagają.

Co zrobić, jeśli rozwiązanie nie działa

Jeśli powyższe metody nie rozwiązały problemu, przejdź przez te kontrole, zanim skontaktujesz się z hostem.

Zmiana nie utrzymała się po zapisie. Panel sterowania Twojego hosta może dostarczać główny php.ini, który nadpisuje każdy lokalny plik, jaki utworzysz. Otwórz panel konfiguracji PHP swojego hosta (w cPanel: Oprogramowanie → Wybierz wersję PHP → Opcje) i ustaw max_input_vars bezpośrednio tam.

Wartość jest ustawiona, ale objawy pozostają. Inna dyrektywa PHP może być rzeczywistym wąskim gardłem. Utwórz tymczasowy plik w katalogu głównym witryny zawierający <?php phpinfo(); ?>, otwórz go w przeglądarce i wyszukaj max_input_vars, aby potwierdzić, że nowa wartość jest aktywna. Sprawdź też post_max_size — jeśli jest niższy niż dane, które przesyła Twoja strona ustawień, samo podniesienie max_input_vars nie rozwiąże problemu.

phpinfo() nie pokazuje nowej wartości. PHP może wczytywać wiele plików konfiguracyjnych. Wynik phpinfo() pokazuje Configuration File (php.ini) Path — potwierdź, że edytowałeś plik tam wymieniony. Na serwerach cPanel aktywny php.ini często znajduje się w katalogu domowym użytkownika, a nie w katalogu głównym witryny WordPress.

Podejście z wp-config.php nie przynosi efektu. Niektóre konfiguracje serwera wyłączają ini_set() za pomocą dyrektywy disable_functions. W takim przypadku użyj zamiast tego metody .htaccess lub php.ini.

Aby uzyskać pomoc dotyczącą powiązanego limitu konfiguracji PHP, zobacz limit pamięci PHP w WordPressie.

Oficjalna specyfikacja tej dyrektywy znajduje się w podręczniku PHP: max_input_vars.

Podsumowanie

Podniesienie max_input_vars to jednowierszowa zmiana konfiguracji, ale wybór właściwego pliku ma znaczenie: .htaccess dla współdzielonych hostów Apache, php.ini dla środowisk VPS, wp-config.php, gdy nie możesz modyfikować plików konfiguracyjnych serwera. Jeśli zmiana się nie utrzymuje, prawdopodobnie nadpisuje ją główna konfiguracja Twojego hosta — powyższe kroki rozwiązywania problemów obejmują najczęstsze przyczyny.

Zawsze wykonuj kopię zapasową witryny przed edycją plików konfiguracyjnych serwera. Jeśli potrzebujesz dodatkowej pomocy, nasz zespół wsparcia może Ci pomóc.

Powiązane artykuły:

Rene Hermenau

Autor: Rene Hermenau

O autorze: René Hermenau jest założycielem WP STAGING. Zajmuje się kopiami zapasowymi WordPressa, środowiskami stagingowymi, migracjami, obsługą baz danych oraz bezpiecznymi procesami wdrażania.