Часть настроек темы не сохраняется
Обновлено
Панель настроек Seller 2.0 отправляет все настройки темы одним POST-запросом. Полей в этой форме больше тысячи, а PHP по умолчанию принимает ровно 1000 и остальные молча отбрасывает. Ошибки при этом не возникает: панель сообщает об успешном сохранении и перезагружает страницу, но часть переключателей возвращается к прежним значениям.
Как это выглядит
- Нажали «Сохранить» — сообщения об ошибке нет, панель перезагрузилась.
- Часть настроек применилась, часть откатилась к прежним значениям.
- Повторное сохранение не помогает: слетают ровно те же настройки.
Типичные жалобы: не сохраняются выбор артикулов в мобильной карточке товара, «Источник ссылок для навигационного меню» в свайп-меню, колонки навигации в подвале, список преимуществ, текст уведомления.
Почему так происходит
Количество полей, которые PHP принимает в одном запросе, ограничено настройкой max_input_vars — по умолчанию это 1000. Всё, что пришло сверх лимита, PHP отбрасывает ещё до того, как запрос доберётся до Webasyst. Приложение получает урезанный набор полей и честно сохраняет то, что получило, — ни тема, ни Webasyst не знают, что часть данных потерялась. Поэтому в интерфейсе и нет никакой ошибки.
Как убедиться, что дело именно в лимите
Сам признак довольно характерный: часть настроек сохраняется, часть нет, и при этом нет никакой ошибки. Текущее значение max_input_vars видно в панели управления хостингом, в разделе настроек PHP. Если там 1000 — это оно. Если найти не удалось, спросите поддержку хостинга — заодно сразу и увеличат.
Что сделать
Увеличить max_input_vars до 5000. Запас нужен: настроек в теме со временем становится больше.
- Написать в поддержку хостинга — самый простой путь: попросите увеличить
max_input_varsдо 5000 для вашего сайта. - Поменять в панели управления хостингом — если хостер разрешает править настройки PHP самостоятельно.
- Прописать самому — строка
max_input_vars = 5000вphp.iniили в файле.user.iniв корне сайта.
После того как лимит поднят, выставьте слетевшие настройки заново и сохраните ещё раз — уже сохранённые неверные значения сами не восстановятся.