Заощадьте 15% на всіх хостингових послугах

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код: Skills Почати
Рубрики
Адміністрація

Як виправити помилку 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

  1. Відкрийте простий текстовий редактор (Notepad, VS Code, nano тощо)
  2. Створіть новий файл і додайте наступний код:
<?php
phpinfo();
?>
  1. Збережіть файл як info.php
  2. Завантажте його в кореневу директорію вашого веб-сервера (наприклад, /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. Типові шляхи включають:

Версія PHPApachePHP-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-директиви на рівні каталогу.

  1. Перейдіть до кореневого каталогу вашої встановлення WordPress (де знаходиться wp-config.php)
  2. Відкрийте або створіть файл .htaccess
  3. Додайте наступний рядок:
php_value max_input_vars 3000
  1. Збережіть файл

Важливо: Цей метод працює тільки на серверах Apache, де включено AllowOverride. Він не працюватиме на Nginx. Якщо ви отримаєте помилку 500 Internal Server Error після збереження, ваш хостер не дозволяє цю директиву — видаліть рядок і замість цього використовуйте Метод 3.

Якщо ви на плані спільного веб-хостингу, спочатку зв’яжіться з командою підтримки вашого хостера, щоб підтвердити, чи дозволені переписування PHP-директив у .htaccess.

Метод 3: Додавання директиви до wp-config.php

Цей метод використовує функцію ini_set() PHP безпосередньо в файлі конфігурації WordPress. Це широко використовуваний обхідний шлях для середовищ, де ні php.ini, ні .htaccess модифікації недоступні.

  1. Відкрийте файл wp-config.php у кореневому каталозі WordPress
  2. Додайте наступний рядок перед коментарем, який читає /* That's all, stop editing! Happy blogging. */:
@ini_set('max_input_vars', 3000);
  1. Збережіть файл

Обмеження, про які слід знати: Деякі хостери відключають ini_set() з причин безпеки, що означає, що цей метод може мовчки не спрацювати. Крім того, оператор подавлення помилок @ використовується тут, щоб запобігти попередженням, якщо функція обмежена — але він також приховує збої. Після застосування цієї зміни завжди перевірте, що вона спрацювала, використовуючи метод phpinfo() описаний у Кроці 1.

Метод 4: Використання файлу php.ini або .user.ini на рівні користувача

На багатьох спільних хостинг-середовищах, що працюють на PHP-FPM, ви можете розмістити користувацький файл php.ini або .user.ini у кореневому каталозі вашого веб-сайту:

  1. Створіть новий файл з назвою .user.ini у кореневому каталозі WordPress
  2. Додайте наступний вміст:
max_input_vars = 3000
  1. Збережіть та завантажте файл

PHP-FPM сканує файли .user.ini періодично (зазвичай кожні 5 хвилин за замовчуванням, контролюється user_ini.cache_ttl). Зміни можуть вступити в силу не відразу — почекайте кілька хвилин перед тестуванням.

Крок 3: Перевірте, чи вступили зміни в силу

Після застосування обраного методу критично важливо підтвердити, що нова межа дійсно активна.

  1. Повертайтеся до http://yourdomain.com/info.php у вашому браузері (повторно завантажте файл, якщо ви його видалили)
  2. Шукайте max_input_vars
  3. Підтвердьте, що стовпець 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_vars3000–5000Ліміт вхідних змінних
memory_limit256MПам’ять PHP на скрипт
upload_max_filesize64M–128MМаксимальний розмір завантаження файлу
post_max_size128MМаксимальний розмір даних POST
max_execution_time120–300Тайм-аут скрипту в секундах
max_input_time120Тайм-аут аналізу вхідних даних

Утримання цих значень оптимізованими забезпечує, щоб ваш сайт 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.

Ось короткий огляд ваших варіантів:

  1. Редагування php.ini — Найкращий метод; потребує доступу на рівні сервера (VPS/Dedicated)
  2. Редагування .htaccess — Хороша альтернатива для спільного хостингу Apache
  3. Редагування wp-config.php — Швидкий обхідний шлях; може бути обмежено деякими хостерами
  4. Створення .user.ini — Корисно в середовищах спільного хостингу PHP-FPM

Завжди перевіряйте ваші зміни за допомогою phpinfo() та видаліть файл інформації після цього. Поєднайте це рішення з більш широким переглядом конфігурації PHP, щоб переконатися, що ваш сайт WordPress працює з максимальною продуктивністю.

Для хостингового середовища, яке дає вам контроль для швидкого та впевненого вирішення таких проблем — без очікування на відповіді в квитках підтримки — дослідіть Dedicated Servers та VPS плани AlexHost, розроблені для критичних за продуктивністю розгортань WordPress.