🚀 Как исправить ошибку “PHP Max Input Vars Limit” в WordPress

Если вы создаете или управляете сайтом WordPress и вдруг столкнулись с ошибкой:

“Warning: Max Input Vars limit reached”
или
“Увеличьте max_input_vars до большего значения”

…это означает, что ваш сервер блокирует обработку PHP слишком большого количества полей ввода – это часто наблюдается при сохранении больших меню, построителей страниц (например, Elementor или WPBakery) или форм отправки.

В этой продвинутой статье мы рассмотрим:

  • ✅ Что такое директива max_input_vars
  • 🧠 Как она влияет на WordPress
  • 🔧 Как ее исправить с помощью различных методов (php.ini, .htaccess, wp-config, Nginx, cPanel и т.д.)
  • 🔐 Лучшие практики и соображения безопасности

🔍 Что такое max_input_vars?

max_input_vars – это директива PHP, которая ограничивает количество входных переменных, которые может принимать PHP (через POST, GET и REQUEST). Это защищает сервер от атак типа “отказ в обслуживании”, но также влияет на легитимные операции в CMS-платформах.

Значение по умолчанию:

max_input_vars = 1000

Если вы превысите этот лимит (например, при сохранении меню WordPress с 1000 пунктами), PHP прервет ввод, и WordPress молча не сможет сохранить все изменения.

📌 Когда вы столкнетесь с ошибкой

  • Сохранение больших навигационных меню
  • Сохранение страниц с большим количеством полей форм
  • Использование конструкторов страниц со сложными макетами
  • Плагины, такие как WPML, Elementor, WooCommerce

🛠️ Устранение ошибки: 6 проверенных методов

✅ 1. Изменить php.ini (лучший способ, если у вас есть root или доступ к VPS)

Это самый чистый способ изменить max_input_vars, если вы используете свой собственный сервер:

Шаг 1: Найдите или создайте файл php.ini (зависит от сервера):

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

Замените 8.1 на вашу версию PHP.

Шаг 2: Найдите и отредактируйте директиву:

max_input_vars = 3000

Шаг 3: Перезапустите ваш веб-сервер:

sudo systemctl restart apache2

или

sudo systemctl restart php8.2-fpm

✅ 2. Обновите .htaccess (Для пользователей Apache с виртуальным хостингом)

Если вы не можете получить доступ к php.ini, попробуйте отредактировать .htaccess в корне вашей установки WordPress:

php_value max_input_vars 3000

⚠️ Это работает только в том случае, если включен mod_php. Некоторые хостеры используют вместо него PHP-FPM, и тогда этот метод не сработает.

✅ 3. Использовать wp-config.php (не всегда эффективно)

WordPress не поддерживает переопределение max_input_vars, но в некоторых конфигурациях это может сработать:

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

Поместите его над строкой, в которой говорится:

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

✅ 4. Изменение пользовательского php.ini или php_value в cPanel

Если вы используете виртуальный хостинг с cPanel:

  • Перейдите в cPanel > Выберите версию PHP > Параметры
  • Найдите параметр max_input_vars и увеличьте его до 3000 или выше
  • Сохраните и проверьте phpinfo() для подтверждения

✅ Работает мгновенно – перезагрузка не требуется.

✅ 5. Использование .user.ini (для сред PHP-FPM или CGI)

Создайте или отредактируйте .user.ini в корневой папке WordPress:

max_input_vars = 3000

Затем перезапустите PHP (или подождите 5 минут, если хост применяет изменения автоматически).

✅ 6. Для серверов NGINX PHP-FPM

NGINX не использует .htaccess, поэтому настройте PHP через пул FPM или php.ini.

Отредактируйте /etc/php/8.1/fpm/php.ini:

max_input_vars = 3000

Затем перезапустите:

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

🧪 Как убедиться, что все работает

Создайте файл phpinfo.php в корне WordPress:


Зайдите в него через браузер: https://yourdomain.com/phpinfo.php

Найдите max_input_vars и убедитесь, что он обновлен.

🧼 Не забудьте удалить файл после этого – он раскрывает конфиденциальную информацию о сервере.

🛡️ Лучшие практики

РекомендацияПричина
Не устанавливайте значение max_input_vars равным 999999Может привести к DoS-уязвимости
Придерживайтесь значения 3000-5000Достаточно для больших меню/конструкторов страниц
Следите за ограничением памятиБольшие значения входных параметров = большее использование памяти
Используйте phpinfo() или ini_get() для отладкиИзбегайте догадок

💡 Бонус: Увеличьте другие связанные лимиты

Иногда эта проблема сопровождается превышением других лимитов:

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

Эти параметры также можно поместить в php.ini, .htaccess или .user.ini.

🧭 Заключительные мысли

Ошибку max_input_vars легко пропустить, но она может нарушить работу критически важных функций WordPress. Увеличив этот лимит с помощью подходящего для вашего окружения метода, вы обеспечите стабильность сложных меню, многоязычного контента и конструкторов страниц с перетаскиванием.