🚀 Як виправити помилку “PHP Max Input Vars Limit” в WordPress

Якщо ви створюєте або керуєте сайтом на WordPress і раптом зіткнулися з такою помилкою:

“Попередження: 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:

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

⚠️ Це працює тільки якщо увімкнено 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. Зміна User 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. Для PHP-FPM серверів NGINX

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:

max_input_vars = 3000

Then restart:

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

Відкрийте його через браузер: 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. Збільшуючи цей ліміт правильним для вашого середовища методом, ви забезпечуєте стабільність для складних меню, багатомовного контенту та конструктора сторінок з перетягуванням.