🚀 Jak naprawić błąd „PHP Max Input Vars Limit” w WordPressie

Jeśli budujesz lub zarządzasz stroną WordPress i nagle napotykasz błąd:

„Ostrzeżenie: osiągnięto limit Max Input Vars”
lub
„Zwiększ max_input_vars do wyższej wartości.”

…oznacza to, że twój serwer blokuje PHP przed przetwarzaniem zbyt wielu pól wejściowych — często widoczne przy zapisywaniu dużych menu, kreatorów stron (takich jak Elementor lub WPBakery) lub przesyłania formularzy.

W tym zaawansowanym artykule omówimy:

  • ✅ Czym jest dyrektywa max_input_vars
  • 🧠 Jak wpływa na WordPress
  • 🔧 Jak to naprawić na różne sposoby (php.ini, .htaccess, wp-config, Nginx, cPanel itp.)
  • 🔐 Najlepsze praktyki i kwestie bezpieczeństwa

🔍 Czym jest max_input_vars?

max_input_vars to dyrektywa PHP, która ogranicza liczbę zmiennych wejściowych, które PHP może zaakceptować (poprzez POST, GET i REQUEST). Chroni to serwer przed atakami typu denial-of-service, ale również wpływa na legalne operacje w platformach CMS.

Wartość domyślna:

max_input_vars = 1000

Jeśli przekroczysz ten limit (np. zapisując menu WordPress z ponad 1000 elementów), PHP przerywa wejście, a WordPress cicho nie zapisuje wszystkich zmian.

📌 Kiedy napotkasz błąd

  • Zapisywanie dużych menu nawigacyjnych
  • Zapisywanie stron z wieloma polami formularzy
  • Używanie kreatorów stron z złożonymi układami
  • Wtyczki takie jak WPML, Elementor, WooCommerce

🛠️ Naprawa błędu: 6 sprawdzonych metod

✅ 1. Zmodyfikuj php.ini (Najlepsza metoda, jeśli masz dostęp do root lub VPS)

To jest najczystszy sposób na zmianę max_input_vars, jeśli prowadzisz własny serwer:

Krok 1: Zlokalizuj lub utwórz plik php.ini (zależy od serwera):

sudo nano /etc/php/8.2/apache2/php.ini

Zamień 8.1 na swoją wersję PHP.

Krok 2: Znajdź i edytuj dyrektywę:

max_input_vars = 3000

Krok 3: Uruchom ponownie swój serwer WWW:

sudo systemctl restart apache2

lub

sudo systemctl restart php8.2-fpm

✅ 2. Zaktualizuj .htaccess (Dla użytkowników Apache z hostingiem współdzielonym)

Jeśli nie masz dostępu do php.ini, spróbuj edytować .htaccess w katalogu głównym swojej instalacji WordPress:

<IfModule mod_php.c>
php_value max_input_vars 3000
</IfModule>

⚠️ To działa tylko wtedy, gdy mod_php jest włączony. Niektórzy dostawcy hostingu używają PHP-FPM, gdzie ta metoda nie zadziała.

✅ 3. Użyj wp-config.php (Nie zawsze skuteczne)

WordPress nie obsługuje natywnie nadpisywania max_input_vars, ale w niektórych konfiguracjach dodanie tego może zadziałać:

@ini_set('max_input_vars', '3000');

Umieść to powyżej linii, która mówi:

/* That's all, stop editing! Happy publishing. */

✅ 4. Zmodyfikuj User php.ini lub php_value w cPanel

Jeśli korzystasz z hostingu współdzielonego z cPanel:

  • Przejdź do cPanel > Wybierz wersję PHP > Opcje
  • Znajdź max_input_vars i zwiększ do 3000 lub wyżej
  • Zapisz i sprawdź phpinfo(), aby potwierdzić

✅ Działa natychmiast — nie wymaga ponownego uruchamiania.

✅ 5. Użyj .user.ini (Dla środowisk PHP-FPM lub CGI)

Utwórz lub edytuj .user.ini w swoim głównym folderze WordPress:

max_input_vars = 3000

Następnie uruchom ponownie PHP (lub poczekaj 5+ minut, jeśli host automatycznie stosuje zmiany).

✅ 6. Dla serwerów NGINX + PHP-FPM

NGINX nie używa .htaccess, więc skonfiguruj PHP za pomocą puli FPM lub php.ini.

Edytuj /etc/php/8.1/fpm/php.ini:

max_input_vars = 3000

Następnie uruchom ponownie:

sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx

🧪 Jak potwierdzić, że działa

Utwórz plik phpinfo.php w swoim katalogu głównym WordPress:

<?php phpinfo(); ?>

Uzyskaj do niego dostęp przez przeglądarkę: https://twojadomena.com/phpinfo.php

Wyszukaj max_input_vars i zweryfikuj, że jest zaktualizowane.

🧼 Nie zapomnij usunąć pliku później — ujawnia wrażliwe informacje o serwerze.

🛡️ Najlepsze praktyki

RekomendacjaPowód
Nie ustawiaj max_input_vars na 999999Może prowadzić do podatności na DoS
Trzymaj się 3000–5000Wystarczająco dla dużych menu/kreatorów stron
Monitoruj limity pamięciDuże zmienne wejściowe = większe zużycie pamięci
Użyj phpinfo() lub ini_get() do debugowaniaUnikaj zgadywania

💡 Bonus: Zwiększ inne powiązane limity

Czasami ten problem towarzyszy innym limitom:

max_execution_time = 300
memory_limit = 512M
post_max_size = 64M
upload_max_filesize = 64M

Te również mogą być umieszczone w php.ini, .htaccess lub .user.ini.

🧭 Ostateczne przemyślenia

Zrozumienie i naprawa błędu max_input_vars w WordPressie. Błąd max_input_vars to subtelny, ale potencjalnie zakłócający problem w WordPressie, który często pozostaje niezauważony — aż coś krytycznego się zepsuje. Ta dyrektywa konfiguracyjna PHP kontroluje maksymalną liczbę zmiennych wejściowych (takich jak pola formularzy lub elementy menu), które twój serwer przetworzy w jednym żądaniu. Jeśli ten limit jest zbyt niski, może cicho uniemożliwić części twojej witryny prawidłowe zapisywanie zmian, szczególnie w złożonych środowiskach.

Gdzie pojawia się problem
Ten błąd zazwyczaj pojawia się w następujących scenariuszach:

Duże lub zagnieżdżone menu WordPress: Podczas budowania szczegółowych struktur menu, tylko część menu może zostać zapisana, lub zmiany mogą zniknąć po zapisaniu.

  • Witryny wielojęzyczne: Wtyczki takie jak WPML lub Polylang mocno polegają na przesyłaniu formularzy z dużą liczbą pól wejściowych dla każdego języka.
  • Kreatory stron: Narzędzia typu drag-and-drop, takie jak Elementor, WPBakery lub Divi, mogą napotkać problemy podczas zapisywania układów z wieloma elementami lub wierszami.
  • Ustawienia motywów lub wtyczek: Niektóre motywy i wtyczki z bogatymi panelami konfiguracyjnymi mogą nie zapisywać wszystkich ustawień poprawnie, jeśli limit zostanie przekroczony.
  • Najgorsze jest to, że często nie ma widocznego komunikatu o błędzie — zmiany po prostu się nie stosują, pozostawiając cię w niepewności, co poszło nie tak.