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 · после обновления · как удалить плагин


Картинки не подменяются

Пройдите по пунктам сверху вниз:

  1. Плагин включён для этой витрины? «Настройки» → «Основные настройки» → «Включить плагин». Убедитесь, что вы смотрите настройки именно той витрины, которую открываете (верхняя панель, поле «Витрина»). После изменения нажмите «Сохранить».
  2. Включена ли хотя бы одна функция на вкладке «Функции» (современные форматы, оптимизация и т. д.)? Без включённых функций плагину нечего подставлять.
  3. Прошло ли достаточно просмотров? Копии создаются порциями. Откройте страницу 2–3 раза с паузой. В режиме «Фоновый» и Smart Hybrid при работающем фоне копии появляются после очередного прогона команды (раз в минуту при cron).
  4. Запускается ли фон (режимы «Фоновый» и Smart Hybrid)? Во вкладке «Диагностика» должно быть «Фоновая команда работает». Если нет — Фоновая обработка не работает.
  5. Проверьте страницу: вкладка «Диагностика» → «Почему изображение не обработано?» → адрес страницы → «Проверить страницу». Ответ подскажет причину (нет файла, формат не поддерживается, картинка слишком велика, карантин, ждёт фон…).
  6. Кеш. Страница могла быть закеширована до включения плагина (кеш плагина кеша страниц, CDN, браузер). Очистите кеши и обновите страницу через Ctrl+F5 (раздел 9).
  7. Скрипт загружается? Откройте исходный код страницы (Ctrl+U) и найдите scripts.js в папке responsiveimages. Если его нет, тема, вероятно, не выводит стандартный заголовок Webasyst — это нужно проверить у разработчика темы. Также скрипт мог быть не создан — см. красное предупреждение на странице настроек: «Не удалось пересобрать scripts.js…».
  8. Исключения. Проверьте поля «Исключить URL-адреса» и «Исключить ссылки на изображения»: адрес мог попасть под правило. У тега img не должно быть атрибута data-responsiveimages="false".
  9. Размер. Картинки шире значения «Пропускать изображения шире» (по умолчанию 2000 px) плагин не обрабатывает. Картинки больше 5000×5000 или 25 мегапикселей тоже пропускаются (запись в skip_large.log).
  10. Динамические блоки. Картинки, которые тема подгружает скриптом после загрузки страницы (AJAX-пагинация, фильтры), плагин не гарантирует.
  11. Отладка в браузере. Откройте инструменты разработчика (F12) → «Консоль»: сообщения плагина начинаются с [responsiveimages].
  12. Картинка искажена после обработки. Добавьте в «Собственный CSS»: img[data-responsiveimages-processed] { width: auto; height: auto; }.
  13. Не создаются @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.

  1. В 4.0 плагин сам не обрабатывает при просмотре страницы такие картинки (их оценка не помещается в memory_limit): они откладываются и ждут фоновой обработки; посетитель видит оригинал. Значит, настоящая «фатальная» ошибка бывает редко.
  2. Если ошибка всё же появляется: увеличьте «PHP Memory limit» на вкладке «Настройки» (блок «Производительность»), рекомендуется 256M и выше.
  3. Если лимит поднять нельзя: включите фоновую обработку (у команды свой предел --memory-limit, по умолчанию 512M) или уменьшайте размер оригиналов.
  4. Копии 2x и 3x заметно увеличивают расход памяти: для крупных оригиналов отключите их.
  5. Диагностика: «Почему изображение не обработано?» покажет «Картинка отложена (слишком велика для просмотра страницы…)».
  6. Если фоновая команда останавливается по памяти, во вкладке «Диагностика» видна причина «memory» и пик памяти. Уменьшите --max-images.

Ориентиры по размеру исходника — в разделе 2.


Фоновая обработка не работает

Симптомы: «Фоновая команда не запускается», предупреждение «В очереди есть изображения, но ни один фоновый прогон не завершался N мин», режим «Фоновый» и копий нет.

  1. Выбран ли режим «Фоновый» или Smart Hybrid для этой витрины и нажато ли «Сохранить»? Команда работает только для витрин с включённым фоном (иначе в выводе no_routes).
  2. Не на паузе ли? Переключатель паузы витрины; команда pause (снять — resume).
  3. Есть ли cron? Откройте планировщик заданий хостинга: задача должна быть, стоять «каждую минуту», команда — строка из блока «Фоновая обработка» (раздел 5).
  4. Запустите команду вручную по 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.
  5. Причина отказа. На странице настроек и во вкладке «Диагностика» показано: нагрузка выше --max-load (подождите, повысьте порог, например --max-load 1.5, или отключите проверку --max-load 0), мало места на диске (освободите), память (следующий запуск продолжит), таблица очереди (repair-schema), пауза.
  6. Пользователь cron. Команда должна идти от пользователя веб-сервера (владельца wa-data), иначе файлы нельзя будет читать или заменять.
  7. Если запуск идёт, но картинки не появляются, посмотрите «Последние ошибки» и «Картинки, убранные из очереди после повторных неудач» в «Диагностике».
  8. Карантин. Проблемная картинка после 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 используются сертификаты сервера. Если хостинг не доверяет сертификату провайдера, обновите пакет корневых сертификатов (см. выше).


После обновления

  1. Ошибка 500 «Class not found» — сбросьте кеш Webasyst.
  2. Картинки ведут себя как раньше / новые настройки не видны — откройте настройки и нажмите «Сохранить».
  3. Режим обработки «При просмотре» — так и должно быть после обновления с 3.3.0: ничего не включается само. Включите Smart Hybrid при наличии cron.
  4. Красное уведомление про таблицу очереди — нажмите «Сохранить» или repair-schema.
  5. Плагин не отвечает на домене-зеркале или поддомене — добавьте домен в маршрутизацию Webasyst.
  6. Старые копии Retina @2x — после обновления они строятся из оригинала; чтобы пересоздать существующие, удалите созданные плагином изображения.
  7. Использовали S3 или GigaChat на 3.3.0 — замените ключи (раздел 13).
  8. Не удаляйте плагин «для чистой установки» — это сотрёт очередь и все созданные файлы.

Как полностью удалить плагин

Удаление стирает таблицы плагина (shop_responsiveimages_image_queue, shop_responsiveimages_images_list, shop_responsiveimages_retired, shop_responsiveimages_demand, shop_responsiveimages_demand_pass) и папку wa-data/public/shop/responsiveimages со всеми созданными картинками и журналами. Оригиналы товаров не затрагиваются. Это необратимо — сделайте резервную копию, если сомневаетесь.

Рекомендуемый порядок:

  1. Если вы используете S3: на вкладке «Настройки» нажмите «Удалить все созданные изображения» — это удалит и файлы в облаке. Плагин при удалении сам файлы в облаке не удаляет. Затем при необходимости удалите бакет у провайдера.
  2. Выключите плагин (переключатель «Включить плагин») и нажмите «Сохранить».
  3. Уберите строку плагина из cron.
  4. Если вы использовали S3 или GigaChat — отзовите ключи у провайдера.
  5. Удалите плагин штатным способом Webasyst (Установщик → Плагины Shop-Script → удалить).
  6. Очистите кеши страниц, CDN и браузера: в закешированных страницах остались адреса копий, которых больше нет.
  7. Очистите кеш Webasyst.

Журналы в wa-log/ (например, responsiveimages.log) при удалении не стираются; их можно удалить вручную.

Просмотр изображения
Оригинал