Jak naprawić błąd limitu PHP Max Input Vars w WordPress
Błąd limitu PHP Max Input Vars jest jednym z najczęstszych — a jednocześnie często źle rozumianych — problemów po stronie serwera, z którymi spotykają się administratorzy WordPress. Cicho obcina przesyłane formularze, psuje funkcjonalność wtyczek i powoduje niekompletne przetwarzanie danych bez zawsze wyrzucania oczywistego komunikatu o błędzie. Jeśli zmagałeś się z brakującymi ustawieniami, uszkodzonymi danymi formularza lub źle zachowującymi się wtyczkami WordPress, ten przewodnik przeprowadzi Cię przez wszystko, co musisz wiedzieć: co powoduje błąd, jak go zdiagnozować i dokładnie jak go naprawić, używając wielu sprawdzonych metod.
Czym jest limit PHP Max Input Vars?
Dyrektywa max_input_vars to ustawienie konfiguracji PHP, które kontroluje maksymalną liczbę zmiennych wejściowych, które Twój serwer zaakceptuje w jednym żądaniu. Dotyczy to wszystkich trzech metod wejścia:
- GET requests (ciągi zapytań URL)
- POST requests (przesyłanie formularzy)
- COOKIE data
Wartość domyślna to zazwyczaj 1000 zmiennych na żądanie. Gdy przesyłanie formularza — lub wtyczka generująca pola dynamiczne — przekroczy ten próg, PHP dyskretnie odrzuca wszystkie zmienne poza limitem. Rezultatem jest niekompletne przetwarzanie danych, uszkodzone strony ustawień i nieprzewidywalne zachowanie wtyczek.
Dlaczego dzieje się to konkretnie w WordPress?
WordPress to wysoce rozszerzalna platforma. Konstruktory stron takie jak Elementor lub WPBakery, złożone wtyczki e-commerce takie jak WooCommerce, zaawansowane systemy menu i wielopolowe formularze kontaktowe mogą generować setki — czasami tysiące — zmiennych wejściowych w jednym przesłaniu. Domyślny limit 1000 po prostu nie wystarczy dla nowoczesnych, bogatych w funkcje instalacji WordPress.
> Typowe objawy to: elementy menu WordPress znikające po zapisaniu, ustawienia wtyczek nie zapisujące się prawidłowo, duże formularze przesyłające niekompletne dane i opcje dostosowywania motywu są tracone.
Jeśli korzystasz z WordPress na planie VPS Hosting, zazwyczaj masz pełny dostęp root do rozwiązania tego na poziomie serwera — najniezawodniejsze podejście. W środowiskach współdzielonych będą obowiązywać alternatywne metody opisane poniżej.
Krok 1: Sprawdź aktualny limit max_input_vars
Przed wprowadzeniem jakichkolwiek zmian potwierdź aktualną konfigurację PHP. Najczystszym sposobem jest wygenerowanie pliku wyjściowego phpinfo().
Utwórz plik PHP Info
- Otwórz zwykły edytor tekstu (Notepad, VS Code, nano, itp.)
- Utwórz nowy plik i dodaj następujący kod:
<?php
phpinfo();
?>- Zapisz plik jako
info.php - Prześlij go do katalogu głównego serwera WWW (np.
/var/www/html/lubpublic_html/)
Przeczytaj wynik
Otwórz przeglądarkę i przejdź do:
http://yourdomain.com/info.phpUżyj Ctrl+F aby wyszukać max_input_vars na stronie. Zobaczysz dwie kolumny: skompilowaną wartość domyślną i lokalnie skonfigurowaną wartość. Zanotuj aktualnie ustawioną wartość.
> ⚠️ Ostrzeżenie bezpieczeństwa: Usuń info.php natychmiast po sprawdzeniu. Ten plik ujawnia wrażliwe szczegóły konfiguracji serwera i nigdy nie powinien pozostawać publicznie dostępny na serwerze produkcyjnym.
Krok 2: Zwiększenie limitu max_input_vars
Istnieją trzy główne metody zwiększenia limitu max_input_vars, każda dostosowana do różnych poziomów dostępu do serwera. Wybierz metodę, która odpowiada Twojemu środowisku hostingowemu.
Metoda 1: Edycja pliku php.ini (Rekomendowana dla VPS i serwerów dedykowanych)
To jest najbardziej autorytatywna i niezawodna metoda. Stosuje zmianę na poziomie silnika PHP, co czyni ją preferowanym podejściem dla administratorów z dostępem na poziomie serwera.
Zlokalizuj plik php.ini. Typowe ścieżki to:
| Wersja PHP | Apache | PHP-FPM |
|---|---|---|
| PHP 7.4 | /etc/php/7.4/apache2/php.ini | /etc/php/7.4/fpm/php.ini |
| PHP 8.1 | /etc/php/8.1/apache2/php.ini | /etc/php/8.1/fpm/php.ini |
| PHP 8.2 | /etc/php/8.2/apache2/php.ini | /etc/php/8.2/fpm/php.ini |
Nie jesteś pewny, którą wersję PHP uruchamiasz? Wykonaj to w terminalu:
php -vEdytuj plik:
sudo nano /etc/php/8.1/apache2/php.iniWyszukaj linię max_input_vars. Może być zakomentowana średnikiem:
; max_input_vars = 1000Odkomentuj ją i zaktualizuj wartość:
max_input_vars = 3000Wartość 3000 jest odpowiednia dla większości instalacji WordPress. W przypadku bardzo złożonych konfiguracji z dużymi menu lub rozbudowanymi konfiguracjami WooCommerce możesz rozważyć 5000.
Uruchom ponownie serwer WWW, aby zastosować zmiany:
Dla Apache:
sudo systemctl restart apache2Dla Nginx z PHP-FPM:
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginxTa metoda jest w pełni dostępna na serwerach dedykowanych i większości niezarządzanych planów VPS, dając Ci pełną kontrolę nad środowiskiem PHP.
Metoda 2: Edycja pliku .htaccess (Dla Apache na hostingu współdzielonym)
Jeśli jesteś na środowisku hostingu współdzielonego lub nie masz bezpośredniego dostępu do php.ini, plik .htaccess oferuje praktyczną alternatywę — pod warunkiem, że Twój host pozwala na zastępowanie dyrektyw PHP na poziomie katalogu.
- Przejdź do katalogu głównego Twojej instalacji WordPress (gdzie znajduje się
wp-config.php) - Otwórz lub utwórz plik
.htaccess - Dodaj następującą linię:
php_value max_input_vars 3000- Zapisz plik
Ważne: Ta metoda działa tylko na serwerach Apache, gdzie AllowOverride jest włączony. Nie będzie działać na Nginx. Jeśli po zapisaniu otrzymasz błąd 500 Internal Server Error, Twój host nie zezwala na tę dyrektywę — usuń linię i zamiast tego użyj Metody 3.
Jeśli jesteś na planie Hostingu współdzielonego, skontaktuj się najpierw z zespołem wsparcia dostawcy hostingu, aby potwierdzić, czy zastępowanie dyrektyw PHP jest dozwolone w .htaccess.
Metoda 3: Dodaj dyrektywę do wp-config.php
Ta metoda używa funkcji ini_set() PHP bezpośrednio w pliku konfiguracyjnym WordPress. Jest to szeroko stosowany obejście dla środowisk, w których modyfikacje php.ini ani .htaccess nie są dostępne.
- Otwórz plik
wp-config.phpw katalogu głównym WordPress - Dodaj następującą linię przed komentarzem, który brzmi
/* That's all, stop editing! Happy blogging. */:
@ini_set('max_input_vars', 3000);- Zapisz plik
Ograniczenia, o których należy wiedzieć: Niektórzy dostawcy hostingu wyłączają ini_set() ze względów bezpieczeństwa, co oznacza, że ta metoda może cicho zawieść. Ponadto operator tłumienia błędów @ jest tutaj używany, aby zapobiec ostrzeżeniom, jeśli funkcja jest ograniczona — ale maskuje również niepowodzenia. Po zastosowaniu tej zmiany zawsze sprawdź, czy zadziałała, używając metody phpinfo() opisanej w Kroku 1.
Metoda 4: Użyj pliku php.ini na poziomie użytkownika lub .user.ini
Na wielu środowiskach hostingu współdzielonego z PHP-FPM możesz umieścić niestandardowy plik php.ini lub .user.ini w katalogu głównym Twojej witryny:
- Utwórz nowy plik o nazwie
.user.iniw katalogu głównym WordPress - Dodaj następującą zawartość:
max_input_vars = 3000- Zapisz i prześlij plik
PHP-FPM skanuje pliki .user.ini okresowo (zwykle co 5 minut domyślnie, kontrolowane przez user_ini.cache_ttl). Zmiany mogą nie wejść w życie natychmiast — czekaj kilka minut przed testowaniem.
Krok 3: Weryfikacja wprowadzonych zmian
Po zastosowaniu wybranej metody, konieczne jest potwierdzenie, że nowy limit jest rzeczywiście aktywny.
- Wróć do
http://yourdomain.com/info.phpw przeglądarce (ponownie prześlij plik, jeśli go usunąłeś) - Wyszukaj
max_input_vars - Potwierdź, że kolumna Local Value wyświetla teraz
3000(lub wybraną wartość)
Jeśli wartość się nie zmieniła, spróbuj poniższych rozwiązań:
- W przypadku zmian php.ini: Upewnij się, że edytowałeś prawidłowy plik
php.inidla Twojej wersji PHP i SAPI (Apache vs. FPM). Zweryfikuj, że serwer www został całkowicie zrestartowany. - W przypadku zmian .htaccess: Sprawdź, czy
AllowOverride Alljest ustawiony w konfiguracji wirtualnego hosta Apache. - W przypadku zmian wp-config.php: Potwierdź, że
ini_set()nie jest wyłączony w konfiguracji PHP, sprawdzając dyrektywędisable_functionswphpinfo().
> 🔒 Pamiętaj: Usuń info.php z serwera zaraz po potwierdzeniu zmian. Pozostawienie go dostępnym stanowi zagrożenie bezpieczeństwa.
Dodatkowe ustawienia PHP warte przeglądu
Podczas gdy masz otwarty php.ini, warto przeanalizować te powiązane ustawienia, które powszechnie wpływają na wydajność i stabilność WordPress:
| Dyrektywa | Rekomendowana wartość | Cel |
|---|---|---|
max_input_vars | 3000–5000 | Limit zmiennych wejściowych |
memory_limit | 256M | Pamięć PHP na skrypt |
upload_max_filesize | 64M–128M | Maksymalny rozmiar przesyłanego pliku |
post_max_size | 128M | Maksymalny rozmiar danych POST |
max_execution_time | 120–300 | Limit czasu wykonania skryptu w sekundach |
max_input_time | 120 | Limit czasu parsowania wejścia |
Utrzymanie tych wartości zoptymalizowanych zapewnia, że Twoja witryna WordPress obsługuje złożone operacje — duże importy, przesyłanie mediów i strony obciążone wtyczkami — bez przeszkód.
Jeśli zarządzasz wieloma witrynami WordPress i chcesz usprawniony interfejs do konfiguracji PHP, rozważ VPS z cPanel, który zapewnia graficzny menedżer konfiguracji PHP wraz z pełną kontrolą serwera.
Wybór odpowiedniego środowiska hostingowego dla WordPress
Łatwość rozwiązywania problemów z konfiguracją PHP, takich jak ten, jest bezpośrednio związana z Twoim środowiskiem hostingowym. Oto szybki przegląd:
- Hosting Współdzielony: Ograniczona kontrola PHP; polegaj na
.htaccess,.user.inilub biletach wsparcia. Odpowiedni dla mniejszych witryn. - Hosting VPS: Pełny dostęp root; edytuj
php.inibezpośrednio i uruchom ponownie usługi. Idealny dla rozwijających się witryn WordPress ze złożonymi ekosystemami wtyczek. - Serwery Dedykowane: Maksymalna kontrola i zasoby; brak konkurencji o zasoby z innymi użytkownikami. Najlepszy dla WordPress o wysokim ruchu lub wdrożeń korporacyjnych.
Dla większości poważnych administratorów WordPress uaktualnienie do planu Hosting VPS jest najskuteczniejszym sposobem na wyeliminowanie ograniczeń konfiguracji serwera i przejęcie pełnej kontroli nad środowiskiem PHP.
Podsumowanie
Błąd limitu PHP max_input_vars to prosty problem, gdy zrozumiesz, co go powoduje — PHP po prostu egzekwuje limit liczby zmiennych wejściowych, które będzie przetwarzać na żądanie. Rozwiązanie jest równie proste: zwiększ limit do wartości, która spełnia potrzeby Twojej instalacji WordPress.
Oto szybkie podsumowanie Twoich opcji:
- Edytuj
php.ini— Najlepsza metoda; wymaga dostępu na poziomie serwera (VPS/Dedicated) - Edytuj
.htaccess— Dobra alternatywa dla hostingu Apache shared - Edytuj
wp-config.php— Szybkie obejście; może być ograniczone przez niektórych hostów - Utwórz
.user.ini— Przydatne w środowiskach PHP-FPM shared hosting
Zawsze sprawdzaj swoje zmiany za pomocą phpinfo() i usuń plik info po tym. Połącz to rozwiązanie z szerszym przeglądem konfiguracji PHP, aby upewnić się, że Twoja witryna WordPress działa na pełnych obrotach.
Aby uzyskać środowisko hostingowe, które daje Ci kontrolę do szybkiego i pewnego rozwiązywania takich problemów — bez czekania na zgłoszenia do obsługi — zapoznaj się z Dedicated Servers i planami VPS AlexHost stworzonymi dla wydajności WordPress.
na wszystkich usługach hostingowych