🚀 Як виправити помилку “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.2/apache2/php.ini

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

Крок 2: Знайдіть і відредагуйте директиву:

max_input_vars = 3000

Крок 3: Перезапустіть веб-сервер:

sudo systemctl restart apache2

або

sudo systemctl перезапустити 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');

Помістіть його над рядком з написом:

/* Це все, припиніть редагування! Щасливої публікації. */

✅ 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. Для серверів 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:

phpinfo(); ?>

phpinfo(); ?>

Доступ через браузер: 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.Помилка max_input_vars є малопомітною, але потенційно руйнівною проблемою в WordPress, яка часто залишається непоміченою, доки не станеться щось критичне. Ця директива конфігурації PHP контролює максимальну кількість вхідних змінних (наприклад, полів форм або пунктів меню), які ваш сервер буде обробляти в одному запиті. Якщо цей ліміт занадто низький, він може непомітно перешкоджати частинам вашого веб-сайту зберігати зміни належним чином, особливо в складних середовищах.

Де з'являється проблема
Ця помилка зазвичай з'являється в наступних сценаріях:

Великі або вкладені меню WordPress: При створенні детальних структур меню може зберегтися лише частина меню, або зміни можуть зникнути після збереження.

  • Багатомовні веб-сайти: Такі плагіни, як WPML або Polylang, значною мірою покладаються на форми з великою кількістю полів введення для кожної мови.
  • Конструктори сторінок: Інструменти перетягування, такі як Elementor, WPBakery або Divi, можуть зіткнутися з проблемами при збереженні макетів з великою кількістю елементів або рядків.
  • Налаштування теми або плагіна: Деякі теми і плагіни з багатими панелями конфігурації можуть не зберегти всі налаштування коректно, якщо перевищено ліміт.
  • Що найгірше? Часто немає видимого повідомлення про помилку - зміни просто не застосовуються, і ви не знаєте, що пішло не так.