Як виправити помилку PHP Max Input Vars Limit у WordPress
Помилка обмеження PHP Max Input Vars є однією з найпоширеніших — але часто неправильно зрозумілих — проблем на стороні сервера, з якими стикаються адміністратори WordPress. Вона мовчки обрізає надіслання форм, порушує функціональність плагінів і викликає неповну обробку даних без завжди очевидного повідомлення про помилку. Якщо ви боролися з відсутніми налаштуваннями, пошкодженими даними форм або неправильною поведінкою плагінів WordPress, цей посібник проведе вас через все, що вам потрібно знати: що викликає помилку, як її діагностувати та як саме її виправити, використовуючи кілька перевірених методів.
Що таке ліміт PHP Max Input Vars?
Директива max_input_vars — це параметр конфігурації PHP, який контролює максимальну кількість вхідних змінних, які ваш сервер прийме в одному запиті. Це стосується всіх трьох методів введення:
- GET запити (рядки запиту URL)
- POST запити (відправлення форм)
- Дані COOKIE
Значення за замовчуванням зазвичай становить 1000 змінних на запит. Коли відправлення форми — або плагін, що генерує динамічні поля — перевищує цей поріг, PHP мовчки відкидає всі змінні за межами ліміту. Результатом є неповна обробка даних, неробочі сторінки налаштувань та непередбачувана поведінка плагінів.
Чому це відбувається саме у WordPress?
WordPress — це висока розширювана платформа. Конструктори сторінок, як-от Elementor або WPBakery, складні плагіни електронної комерції, як-от WooCommerce, розширені системи меню та багатопольні контактні форми можуть генерувати сотні — іноді тисячи — вхідних змінних в одній відправці. Ліміт за замовчуванням у 1000 просто недостатній для сучасних, багатофункціональних установок WordPress.
> Поширені симптоми включають: зникнення пунктів меню WordPress після збереження, неправильне збереження налаштувань плагінів, великі форми з неповними даними, втрата опцій налаштування теми.
Якщо ви запускаєте WordPress на плані VPS Hosting, ви зазвичай маєте повний доступ root для вирішення цієї проблеми на рівні сервера — найнадійніший підхід. У спільних середовищах будуть застосовуватися альтернативні методи, описані нижче.
Крок 1: Перевірте поточний ліміт max_input_vars
Перш ніж вносити будь-які зміни, підтвердіть вашу поточну конфігурацію PHP. Найчистіший спосіб зробити це — створити файл phpinfo() output.
Створіть файл PHP Info
- Відкрийте простий текстовий редактор (Notepad, VS Code, nano тощо)
- Створіть новий файл і додайте наступний код:
<?php
phpinfo();
?>- Збережіть файл як
info.php - Завантажте його в кореневу директорію вашого веб-сервера (наприклад,
/var/www/html/абоpublic_html/)
Прочитайте результат
Відкрийте браузер і перейдіть на:
http://yourdomain.com/info.phpВикористовуйте Ctrl+F для пошуку max_input_vars на сторінці. Ви побачите два стовпці: скомпільоване значення за замовчуванням і локально налаштоване значення. Зверніть увагу на те, що встановлено в даний момент.
> ⚠️ Попередження безпеки: Видаліть info.php одразу після перевірки. Цей файл розкриває конфіденційні деталі конфігурації сервера і ніколи не повинен залишатися загальнодоступним на виробничому сервері.
Крок 2: Збільшення обмеження max_input_vars
Існує три основні методи збільшення обмеження max_input_vars, кожен з яких підходить для різних рівнів доступу до сервера. Виберіть метод, який відповідає вашому хостинг-середовищу.
Метод 1: Редагування файлу php.ini (Рекомендується для VPS та виділених серверів)
Це найбільш авторитетний та надійний метод. Він застосовує зміну на рівні PHP-рушія, що робить його переважним підходом для адміністраторів з доступом на рівні сервера.
Знайдіть ваш файл php.ini. Типові шляхи включають:
| Версія 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 |
Не впевнені, яку версію PHP ви використовуєте? Виконайте це в терміналі:
php -vВідредагуйте файл:
sudo nano /etc/php/8.1/apache2/php.iniЗнайдіть рядок max_input_vars. Він може бути закоментований крапкою з комою:
; max_input_vars = 1000Розкоментуйте його та оновіть значення:
max_input_vars = 3000Значення 3000 підходить для більшості встановлень WordPress. Для дуже складних конфігурацій з великими меню або розширеними конфігураціями WooCommerce ви можете розглянути 5000.
Перезавантажте веб-сервер, щоб застосувати зміни:
Для Apache:
sudo systemctl restart apache2Для Nginx з PHP-FPM:
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginxЦей метод повністю доступний на виділених серверах та більшості неуправління планів VPS, надаючи вам повний контроль над вашим PHP-середовищем.
Метод 2: Редагування файлу .htaccess (для Apache спільного хостингу)
Якщо ви на спільному хостинг-середовищі або не маєте прямого доступу до php.ini, файл .htaccess пропонує практичну альтернативу — за умови, що ваш хостер дозволяє переписувати PHP-директиви на рівні каталогу.
- Перейдіть до кореневого каталогу вашої встановлення WordPress (де знаходиться
wp-config.php) - Відкрийте або створіть файл
.htaccess - Додайте наступний рядок:
php_value max_input_vars 3000- Збережіть файл
Важливо: Цей метод працює тільки на серверах Apache, де включено AllowOverride. Він не працюватиме на Nginx. Якщо ви отримаєте помилку 500 Internal Server Error після збереження, ваш хостер не дозволяє цю директиву — видаліть рядок і замість цього використовуйте Метод 3.
Якщо ви на плані спільного веб-хостингу, спочатку зв’яжіться з командою підтримки вашого хостера, щоб підтвердити, чи дозволені переписування PHP-директив у .htaccess.
Метод 3: Додавання директиви до wp-config.php
Цей метод використовує функцію ini_set() PHP безпосередньо в файлі конфігурації WordPress. Це широко використовуваний обхідний шлях для середовищ, де ні php.ini, ні .htaccess модифікації недоступні.
- Відкрийте файл
wp-config.phpу кореневому каталозі WordPress - Додайте наступний рядок перед коментарем, який читає
/* That's all, stop editing! Happy blogging. */:
@ini_set('max_input_vars', 3000);- Збережіть файл
Обмеження, про які слід знати: Деякі хостери відключають ini_set() з причин безпеки, що означає, що цей метод може мовчки не спрацювати. Крім того, оператор подавлення помилок @ використовується тут, щоб запобігти попередженням, якщо функція обмежена — але він також приховує збої. Після застосування цієї зміни завжди перевірте, що вона спрацювала, використовуючи метод phpinfo() описаний у Кроці 1.
Метод 4: Використання файлу php.ini або .user.ini на рівні користувача
На багатьох спільних хостинг-середовищах, що працюють на PHP-FPM, ви можете розмістити користувацький файл php.ini або .user.ini у кореневому каталозі вашого веб-сайту:
- Створіть новий файл з назвою
.user.iniу кореневому каталозі WordPress - Додайте наступний вміст:
max_input_vars = 3000- Збережіть та завантажте файл
PHP-FPM сканує файли .user.ini періодично (зазвичай кожні 5 хвилин за замовчуванням, контролюється user_ini.cache_ttl). Зміни можуть вступити в силу не відразу — почекайте кілька хвилин перед тестуванням.
Крок 3: Перевірте, чи вступили зміни в силу
Після застосування обраного методу критично важливо підтвердити, що нова межа дійсно активна.
- Повертайтеся до
http://yourdomain.com/info.phpу вашому браузері (повторно завантажте файл, якщо ви його видалили) - Шукайте
max_input_vars - Підтвердьте, що стовпець Local Value тепер показує
3000(або вибране вами значення)
Якщо значення не змінилося, спробуйте наступне:
- Для змін php.ini: Переконайтеся, що ви відредагували правильний файл
php.iniдля вашої версії PHP та SAPI (Apache vs. FPM). Перевірте, що веб-сервер був повністю перезавантажений. - Для змін .htaccess: Перевірте, що
AllowOverride Allвстановлено у конфігурації віртуального хоста Apache. - Для змін wp-config.php: Підтвердьте, що
ini_set()не вимкнено у конфігурації PHP, перевіривши директивуdisable_functionsуphpinfo().
> 🔒 Пам’ятайте: Видаліть info.php з вашого сервера, як тільки ви підтвердили зміни. Залишення його доступним — це ризик безпеки.
Додаткові параметри PHP, які варто переглянути
Поки у вас відкритий php.ini, варто перевірити ці пов’язані параметри, які зазвичай впливають на продуктивність і стабільність WordPress:
| Директива | Рекомендоване значення | Призначення |
|---|---|---|
max_input_vars | 3000–5000 | Ліміт вхідних змінних |
memory_limit | 256M | Пам’ять PHP на скрипт |
upload_max_filesize | 64M–128M | Максимальний розмір завантаження файлу |
post_max_size | 128M | Максимальний розмір даних POST |
max_execution_time | 120–300 | Тайм-аут скрипту в секундах |
max_input_time | 120 | Тайм-аут аналізу вхідних даних |
Утримання цих значень оптимізованими забезпечує, щоб ваш сайт WordPress обробляв складні операції — великі імпорти, завантаження медіа та сторінки з багатьма плагінами — без перебоїв.
Якщо ви керуєте кількома сайтами WordPress і хочете спрощений інтерфейс для конфігурації PHP, розгляньте VPS з cPanel, який надає графічний менеджер конфігурації PHP разом з повним контролем сервера.
Вибір правильного хостинг-середовища для WordPress
Легкість, з якою ви можете вирішити проблеми конфігурації PHP, як ця, безпосередньо пов’язана з вашим хостинг-середовищем. Ось короткий огляд:
- Спільний хостинг: Обмежений контроль PHP; покладайтеся на
.htaccess,.user.iniабо квитки підтримки. Підходить для менших сайтів. - VPS Hosting: Повний root-доступ; редагуйте
php.iniбезпосередньо та перезавантажуйте сервіси. Ідеально для зростаючих сайтів WordPress зі складними екосистемами плагінів. - Виділені сервери: Максимальний контроль та ресурси; відсутня конкуренція за ресурси з іншими користувачами. Найкраще для високотрафікових або корпоративних розгортань WordPress.
Для більшості серйозних адміністраторів WordPress оновлення до плану VPS Hosting є найефективнішим способом усунення обмежень конфігурації сервера та отримання повного контролю над вашим PHP-середовищем.
Висновок
Помилка обмеження PHP max_input_vars — це простий випадок, коли ви розумієте, що її спричиняє — PHP просто встановлює обмеження на кількість вхідних змінних, які він обробляє за запит. Рішення також просте: збільшіть обмеження до значення, яке відповідає потребам вашої установки WordPress.
Ось короткий огляд ваших варіантів:
- Редагування
php.ini— Найкращий метод; потребує доступу на рівні сервера (VPS/Dedicated) - Редагування
.htaccess— Хороша альтернатива для спільного хостингу Apache - Редагування
wp-config.php— Швидкий обхідний шлях; може бути обмежено деякими хостерами - Створення
.user.ini— Корисно в середовищах спільного хостингу PHP-FPM
Завжди перевіряйте ваші зміни за допомогою phpinfo() та видаліть файл інформації після цього. Поєднайте це рішення з більш широким переглядом конфігурації PHP, щоб переконатися, що ваш сайт WordPress працює з максимальною продуктивністю.
Для хостингового середовища, яке дає вам контроль для швидкого та впевненого вирішення таких проблем — без очікування на відповіді в квитках підтримки — дослідіть Dedicated Servers та VPS плани AlexHost, розроблені для критичних за продуктивністю розгортань WordPress.
на всіх хостингових послугах