12. Решение проблем (частые вопросы)
Первое, что стоит сделать при любой проблеме: открыть вкладку «Диагностика» (раздел 11) и воспользоваться проверкой «Почему изображение не обработано?». Отчёт, который можно приложить к обращению в поддержку, — кнопка «Скачать отчёт».
Журналы плагина лежат в папке wa-log/: responsiveimages.log, responsiveimages-update.log, а также файлы в wa-log/responsiveimages/ (например, errors.log, skip_large.log, failed-images.log).
Содержание: картинки не подменяются · ошибки 500 и 502 · Not enough memory · фон не работает · предупреждения на странице настроек · ошибки S3 · ошибки TLS · после обновления · как удалить плагин
Картинки не подменяются
Пройдите по пунктам сверху вниз:
- Плагин включён для этой витрины? «Настройки» → «Основные настройки» → «Включить плагин». Убедитесь, что вы смотрите настройки именно той витрины, которую открываете (верхняя панель, поле «Витрина»). После изменения нажмите «Сохранить».
- Включена ли хотя бы одна функция на вкладке «Функции» (современные форматы, оптимизация и т. д.)? Без включённых функций плагину нечего подставлять.
- Прошло ли достаточно просмотров? Копии создаются порциями. Откройте страницу 2–3 раза с паузой. В режиме «Фоновый» и Smart Hybrid при работающем фоне копии появляются после очередного прогона команды (раз в минуту при cron).
- Запускается ли фон (режимы «Фоновый» и Smart Hybrid)? Во вкладке «Диагностика» должно быть «Фоновая команда работает». Если нет — Фоновая обработка не работает.
- Проверьте страницу: вкладка «Диагностика» → «Почему изображение не обработано?» → адрес страницы → «Проверить страницу». Ответ подскажет причину (нет файла, формат не поддерживается, картинка слишком велика, карантин, ждёт фон…).
- Кеш. Страница могла быть закеширована до включения плагина (кеш плагина кеша страниц, CDN, браузер). Очистите кеши и обновите страницу через Ctrl+F5 (раздел 9).
- Скрипт загружается? Откройте исходный код страницы (Ctrl+U) и найдите
scripts.jsв папкеresponsiveimages. Если его нет, тема, вероятно, не выводит стандартный заголовок Webasyst — это нужно проверить у разработчика темы. Также скрипт мог быть не создан — см. красное предупреждение на странице настроек: «Не удалось пересобрать scripts.js…». - Исключения. Проверьте поля «Исключить URL-адреса» и «Исключить ссылки на изображения»: адрес мог попасть под правило. У тега
imgне должно быть атрибутаdata-responsiveimages="false". - Размер. Картинки шире значения «Пропускать изображения шире» (по умолчанию 2000 px) плагин не обрабатывает. Картинки больше 5000×5000 или 25 мегапикселей тоже пропускаются (запись в
skip_large.log). - Динамические блоки. Картинки, которые тема подгружает скриптом после загрузки страницы (AJAX-пагинация, фильтры), плагин не гарантирует.
- Отладка в браузере. Откройте инструменты разработчика (F12) → «Консоль»: сообщения плагина начинаются с
[responsiveimages]. - Картинка искажена после обработки. Добавьте в «Собственный CSS»:
img[data-responsiveimages-processed] { width: auto; height: auto; }. - Не создаются
@2x. Такие копии создаются, только если соответствующая функция включена и у картинки в имени файла есть суффикс@2x. Если оригинала@2xнет, плагин его пропускает — это нормально.
Если после сохранения настроек на странице всё ещё оригиналы, а в «Диагностике» написано «Готово: картинки созданы» — HTML, скорее всего, приходит из кеша или тема не использует плагин.
Ошибки 500, 502 и 503
| Симптом | Причина | Что сделать |
|---|---|---|
| Ошибка 500 сразу после установки или обновления; в тексте «Class not found» | Не сброшен кеш Webasyst | Сбросьте кеш (в настройках «Очистить кеш» или удалите содержимое wa-cache) |
| Ошибка 500 сразу после установки или обновления; в тексте «Composer detected issues…» | PHP ниже 8.2 | Переведите сайт на PHP 8.2–8.5 или откатитесь на резервную копию (раздел 3) |
| Страница настроек не открывается, «Access denied» | Нет права на настройки Shop-Script | Попросите администратора выдать право |
| Ошибки 502 или 504 при просмотре страниц | Запрос посетителя слишком долго обрабатывает картинки, и веб-сервер обрывает его | Уменьшите «Бюджет времени на запрос посетителя» (он должен быть заметно меньше таймаутов fastcgi_read_timeout, request_terminate_timeout), «Изображений на запрос посетителя»; или переключитесь на «Фоновый» режим / Smart Hybrid с cron. Причина 502 у конкретного клиента не подтверждена тестами — смотрите журнал ошибок веб-сервера |
| Ошибка 503 при обработке картинок | Плагин перегружает сервер | Уменьшите нагрузку: «Максимум URL для обработки» — 1, «Лимит изображений на один URL» — 5–10, «Максимальное время выполнения задачи» — 30–60 с, паузы между задачами 1–2 с и между изображениями 0,5–1 с, включите «Проверку нагрузки на сервер» с порогом 1,0–1,5. Лучше перейти на фоновую обработку |
Ошибка памяти («Allowed memory size exhausted», не хватает памяти)
Картинка слишком велика для лимита памяти PHP.
- В 4.0 плагин сам не обрабатывает при просмотре страницы такие картинки (их оценка не помещается в
memory_limit): они откладываются и ждут фоновой обработки; посетитель видит оригинал. Значит, настоящая «фатальная» ошибка бывает редко. - Если ошибка всё же появляется: увеличьте «PHP Memory limit» на вкладке «Настройки» (блок «Производительность»), рекомендуется 256M и выше.
- Если лимит поднять нельзя: включите фоновую обработку (у команды свой предел
--memory-limit, по умолчанию 512M) или уменьшайте размер оригиналов. - Копии 2x и 3x заметно увеличивают расход памяти: для крупных оригиналов отключите их.
- Диагностика: «Почему изображение не обработано?» покажет «Картинка отложена (слишком велика для просмотра страницы…)».
- Если фоновая команда останавливается по памяти, во вкладке «Диагностика» видна причина «memory» и пик памяти. Уменьшите
--max-images.
Ориентиры по размеру исходника — в разделе 2.
Фоновая обработка не работает
Симптомы: «Фоновая команда не запускается», предупреждение «В очереди есть изображения, но ни один фоновый прогон не завершался N мин», режим «Фоновый» и копий нет.
- Выбран ли режим «Фоновый» или Smart Hybrid для этой витрины и нажато ли «Сохранить»? Команда работает только для витрин с включённым фоном (иначе в выводе
no_routes). - Не на паузе ли? Переключатель паузы витрины; команда
pause(снять —resume). - Есть ли cron? Откройте планировщик заданий хостинга: задача должна быть, стоять «каждую минуту», команда — строка из блока «Фоновая обработка» (раздел 5).
- Запустите команду вручную по SSH (от пользователя сайта) и прочитайте вывод:
php /путь/к/сайту/cli.php shop responsiveimagesPluginBackground run php /путь/к/сайту/cli.php shop responsiveimagesPluginBackground status- «Composer detected issues» — версия
phpв командной строке ниже 8.2. Укажите полный путь к нужной версии (например,/usr/bin/php8.3). - Нет такой команды / путь не найден — неверный путь к
cli.php.
- «Composer detected issues» — версия
- Причина отказа. На странице настроек и во вкладке «Диагностика» показано: нагрузка выше
--max-load(подождите, повысьте порог, например--max-load 1.5, или отключите проверку--max-load 0), мало места на диске (освободите), память (следующий запуск продолжит), таблица очереди (repair-schema), пауза. - Пользователь cron. Команда должна идти от пользователя веб-сервера (владельца
wa-data), иначе файлы нельзя будет читать или заменять. - Если запуск идёт, но картинки не появляются, посмотрите «Последние ошибки» и «Картинки, убранные из очереди после повторных неудач» в «Диагностике».
- Карантин. Проблемная картинка после 3 неудач откладывается на 24 часа. Вернуть сразу: ссылка «Повторить изображения из карантина» или команда
retry-quarantined.
Если cron на хостинге недоступен, используйте режим «При просмотре».
Предупреждения на странице настроек
| Что написано | Что значит | Что делать |
|---|---|---|
| «Не удалось пересобрать scripts.js для витрин ниже…» | Не создался файл скрипта витрины | Проверьте права записи в wa-data/public/shop/responsiveimages/, журнал responsiveimages.log; нажмите «Сохранить» для этой витрины |
| «Фоновая обработка сейчас не работает, а витрины ниже работают в режиме «Фоновый»…» | Режим «Фоновый» выбран, а фон не работает: картинки не создаются | Запустите фон (cron) или смените режим |
| «В очереди есть изображения, но ни один фоновый прогон не завершался N мин» | Фон давно не запускался | Проверьте cron (выше) |
| «Последний запуск отработал не как обычно: …» | Причина последнего отказа: нагрузка (--max-load), пауза, мало места на диске, память, не достроена таблица очереди |
Устраните причину, см. текст сообщения |
| «Приостановлено для всех витрин командой «pause»» | Команда pause |
Выполните resume |
| «Обновление таблицы очереди версии 3.4 отложено (большая очередь)…» | Очередь больше 5000 задач | Нажмите «Сохранить» или выполните repair-schema (раздел 3) |
| «Сохранённые настройки сочетают «в пределах бюджета» с фоновой обработкой (тестовая сборка 3.4)…» | Встречается только у тех, кто пользовался тестовой сборкой | Режим показан как Smart Hybrid; нажмите «Сохранить» |
| «Адрес хранилища изменён, но секретный ключ не введён заново…» | Вы изменили адрес S3, а ключ сохранён для старого | Введите секретный ключ заново |
| Оранжевая пометка «Рекомендуется: 256M» у поля «PHP Memory limit» | У сервера лимит ниже 256M | Увеличьте лимит у хостинга или выберите больший в настройках |
| «Эта функция доступна только в редакции «Премиум»» | Функция есть только в редакции «Премиум» | Обновите лицензию (ссылка в сообщении) или не используйте функцию |
Ошибки S3
Проверка — кнопка «Проверить подключение» (раздел 8). Сообщение называет шаг, который не прошёл.
| Сообщение | Причина | Что делать |
|---|---|---|
| «Проверка доступа к бакету не прошла (шаг 1 из 3, headBucket)» | Неверный адрес хранилища, имя бакета, ключ или регион; у ключа нет доступа к бакету | Сверьте поля с данными провайдера. Имя бакета чувствительно к регистру |
| «Запись тестового объекта не прошла (шаг 2 из 3, putObject)» | У ключа нет права записи, либо бакет не принимает ACL | Выдайте право записи. Если в сообщении упомянуто AccessControlListNotSupported — включите «Не отправлять ACL» и откройте файлы политикой бакета |
| «Удаление тестового объекта не прошло (шаг 3 из 3, deleteObject)…» | У ключа нет права удаления | Выдайте право удаления; тестовый файл (имя указано в сообщении) удалите вручную |
| Предупреждение «тестовый объект не читается без подписи…» | Файлы закрыты для публичного чтения: посетители картинки не получат | Откройте бакет на чтение политикой, либо выключите «Не отправлять ACL», если хранилище поддерживает ACL |
| Предупреждение «публичное чтение… проверить не удалось» | Редирект, ошибка сервера или неожиданный ответ | Откройте адрес картинки без входа и убедитесь, что она загружается |
| «Сохранённый секретный ключ можно использовать только с сохранённым адресом (endpoint)…» | Вы изменили адрес, ключ сохранён для прежнего | Введите секретный ключ заново |
| «Слишком много попыток» | Слишком частые нажатия кнопки | Подождите немного |
| «Конечная точка должна быть корректным URL» | В «URL хранилища» не адрес | Укажите полный адрес с https:// |
| «PHP extension simplexml is required» | На сервере нет расширения simplexml |
Попросите хостинг включить |
| «Invalid image data for cloud storage upload» | Встречалось в 3.3.0 при командах «размеры» и «alt» | Исправлено в 4.0; обновитесь |
Дополнительно: ключ с доступом только к одному бакету подходит (плагин не требует права просматривать список бакетов). Две витрины на одном бакете не поддерживаются. Amazon S3 не проверялся (раздел 8).
Ошибки TLS (сертификатов)
Внешние (абсолютные) HTTPS-ссылки на картинки не скачиваются
Симптом: в wa-log/responsiveimages/errors.log строка «TLS certificate of <хост> was not verified» с упоминанием openssl.cafile.
Причина: плагин скачивает картинки по абсолютным HTTPS-ссылкам с проверкой сертификата. На хостинге со старым набором корневых сертификатов (например, нет корневого сертификата ISRG Root X1 центра Let’s Encrypt) проверка не проходит.
Что делать: попросите хостинг обновить пакет корневых сертификатов на сервере (на Linux — пакет ca-certificates) или указать актуальный файл в параметре PHP openssl.cafile. Отключить проверку нельзя. Картинки с относительными адресами (без хоста) этим не затрагиваются.
GigaChat
Соединение с GigaChat всегда проверяется сертификатом НУЦ Минцифры (Russian Trusted Root CA), который входит в плагин. Проверку отключить нельзя. Ошибки соединения ищите в журналах и во вкладке «Диагностика» → «Последние ошибки». См. раздел 10.
S3
Для обращения к S3 используются сертификаты сервера. Если хостинг не доверяет сертификату провайдера, обновите пакет корневых сертификатов (см. выше).
После обновления
- Ошибка 500 «Class not found» — сбросьте кеш Webasyst.
- Картинки ведут себя как раньше / новые настройки не видны — откройте настройки и нажмите «Сохранить».
- Режим обработки «При просмотре» — так и должно быть после обновления с 3.3.0: ничего не включается само. Включите Smart Hybrid при наличии cron.
- Красное уведомление про таблицу очереди — нажмите «Сохранить» или
repair-schema. - Плагин не отвечает на домене-зеркале или поддомене — добавьте домен в маршрутизацию Webasyst.
- Старые копии Retina
@2x— после обновления они строятся из оригинала; чтобы пересоздать существующие, удалите созданные плагином изображения. - Использовали S3 или GigaChat на 3.3.0 — замените ключи (раздел 13).
- Не удаляйте плагин «для чистой установки» — это сотрёт очередь и все созданные файлы.
Как полностью удалить плагин
Удаление стирает таблицы плагина (
shop_responsiveimages_image_queue,shop_responsiveimages_images_list,shop_responsiveimages_retired,shop_responsiveimages_demand,shop_responsiveimages_demand_pass) и папкуwa-data/public/shop/responsiveimagesсо всеми созданными картинками и журналами. Оригиналы товаров не затрагиваются. Это необратимо — сделайте резервную копию, если сомневаетесь.
Рекомендуемый порядок:
- Если вы используете S3: на вкладке «Настройки» нажмите «Удалить все созданные изображения» — это удалит и файлы в облаке. Плагин при удалении сам файлы в облаке не удаляет. Затем при необходимости удалите бакет у провайдера.
- Выключите плагин (переключатель «Включить плагин») и нажмите «Сохранить».
- Уберите строку плагина из cron.
- Если вы использовали S3 или GigaChat — отзовите ключи у провайдера.
- Удалите плагин штатным способом Webasyst (Установщик → Плагины Shop-Script → удалить).
- Очистите кеши страниц, CDN и браузера: в закешированных страницах остались адреса копий, которых больше нет.
- Очистите кеш Webasyst.
Журналы в wa-log/ (например, responsiveimages.log) при удалении не стираются; их можно удалить вручную.