Услуги Создание магазина Доработка Интеграция 1С О компании FAQ Блог Кейсы Отзывы Контакты
А
Автор статьи

Белый экран в OpenCart: причины и пошаговое решение

Белый экран (White Screen of Death) — когда сайт открывается, но вместо контента пустая страница. Никаких ошибок, никаких подсказок. За 17 лет я с OpenCart видел этот симптом сотни раз. В 80% случаев причина находится за 5–10 минут. Разберём по шагам, как превратить белый экран в понятную ошибку и починить.

Главное правило: не паниковать и не перезагружать сервер. Белый экран — это не проблема сервера. Это ошибка в коде, которую сервер просто скрывает. Наша задача — заставить его показать ошибку.

Почему возникает белый экран в OpenCart

А из-за чего вообще OpenCart показывает белый экран, а не ошибку?

  • Фатальная ошибка PHP — вызов несуществующего класса или функции. Самая частая причина.
  • Нехватка памяти — memory_limit исчерпан на страницах с большим каталогом.
  • Конфликт модулей — два модуля пытаются переопределить один и тот же метод или класс.
  • Дублирование класса — старый и новый модуль определяют класс с одним именем.
  • Синтаксическая ошибка — в файле модуля или шаблона пропущена точка с запятой или скобка.

Шаг 1. Включите отображение ошибок — белый экран исчезнет

А что делать Прежде всего, когда вы видите белый экран? Включите отображение ошибок PHP. Белый экран — это просто скрытая ошибка. Откройте index.php в корне OpenCart и добавьте в самое начало:

ini_set("display_errors", 1);
error_reporting(E_ALL);

Обновите страницу — вместо белого экрана вы увидите конкретную ошибку с файлом и номером строки. После диагностики обязательно уберите эти строки.

Если править index.php страшно — добавьте через .htaccess: php_flag display_errors on. Или через панель хостинга временно включите display_errors.

Шаг 2. Проверьте логи ошибок

А что делать, если display_errors включить не получается (хостинг блокирует)? Проверьте логи.

Первый — system/storage/logs/error.log. Туда OpenCart пишет свои ошибки. Второй — логи PHP на сервере: /var/log/php_error.log или error_log в корне сайта. Третий — логи веб-сервера: /var/log/apache2/error.log или /var/log/nginx/error.log.

Случай из практики: клиент обновил модуль доставки — и сайт погас: белый экран на всех страницах. В логе PHP: «Fatal error: Cannot redeclare class ModelExtensionShippingCustom». Новый модуль определял тот же класс, что и старый — который не удалили перед обновлением. Нашли файл старого модуля, удалили — сайт заработал за 2 минуты.

Шаг 3. Отключайте модули по одному

А что делать, если в логах пусто, а display_errors ничего не показывает? Отключайте модули. Самый быстрый способ — переименовать папку модуля в system/storage/modification/ и очистить кэш модификаций (Система → Модификаторы → Очистить кэш).

Если админка тоже выдаёт белый экран — отключайте через FTP: переименовывайте папки модулей в /admin/controller/extension/module/ и /catalog/controller/extension/module/ по одной.

Кейс: белый экран на странице категории. display_errors показал «Call to undefined function в модуле фильтра». Отключили модуль — страница заработала. Заменили фильтр на другой. Подробнее про типы PHP-ошибок в OpenCart.

Шаг 4. Проверьте память и лимиты PHP

А что делать, если белый экран появляется только на больших страницах — каталоге с 5 000+ товаров или при генерации карты сайта? Почти наверняка не хватает памяти.

php_value memory_limit 256M
php_value max_execution_time 180

Добавьте эти строки в .htaccess в корне сайта. Если хостинг не позволяет — напишите в поддержку, пусть увеличат лимиты.

Шаг 5. Проверьте шаблон

А что делать, если все шаги пройдены, а белый экран остаётся? Временно включите стандартный шаблон OpenCart. Если проблема в кастомном шаблоне — при переключении на дефолт белый экран исчезнет.

Сравните файлы кастомного шаблона с оригинальными — ищите синтаксические ошибки. Чаще всего проблема в файлах catalog/view/theme/YOUR_THEME/template/.

Таблица: симптом → причина → решение

СимптомПричинаРешение
Белый экран на всех страницахДублирование класса модуляНайти и удалить старый файл модуля
Белый экран на странице категорииОшибка в модуле фильтра или сортировкиОтключить модуль
Белый экран в админке, сайт работаетМодуль, грузящийся только в админкеПереименовывать папки модулей в админке
Белый экран после обновления модуляНесовместимость с версией OpenCartУдалить старые файлы модуля
Белый экран на больших страницахНехватка memory_limitУвеличить лимит до 256M

Как предотвратить белый экран

А что делать, чтобы белый экран никогда не появлялся?

  • Тестируйте модули на копии сайта перед установкой на продакшен. Это главное правило.
  • Делайте бэкап перед любыми изменениями — гайд по бэкапам OpenCart.
  • Удаляйте старые версии модулей перед установкой новых. Не заливайте поверх.
  • Проверяйте совместимость модулей с вашей версией OpenCart и PHP.
  • Используйте staging-сервер для тестирования обновлений.

После обновления ядра OpenCart проверяйте совместимость модулей — 40% белых экранов после обновления вызваны модулями, которые не обновили. Гайд по безопасному обновлению OpenCart.

Часто задаваемые вопросы

Белый экран появляется только в админке. Почему?

Чаще всего из-за модуля, который грузится только в админке. Переименовывайте папки модулей в admin/controller/extension/module/ по очереди — найдёте проблемный за 5 минут.

Как предотвратить белый экран после обновления?

Тестируйте модули и обновления на копии сайта перед установкой на продакшен. И всегда делайте бэкап перед любыми изменениями.

Белый экран после обновления ядра OpenCart. Что делать?

Вернитесь на предыдущую версию из бэкапа и проверьте совместимость модулей с новой версией. 40% белых экранов после обновления ядра — из-за необновлённых модулей.

Можно ли восстановить сайт без бэкапа?

Технически — да, но это занимает значительно больше времени. Придётся вручную искать повреждённые файлы, сверять с оригинальным дистрибутивом. Поэтому бэкап — святое.

Белый экран и ошибка 500 — это одно и то же?

Нет. Ошибка 500 возвращает HTTP-код и ложится на серверном уровне. Белый экран — страница открывается (HTTP 200), но контента нет. Причины и методы диагностики похожи, но не идентичны. Подробнее — статья про ошибку 500 в OpenCart.

Об авторе

Основатель студии разработки на OpenCart. С 2009 года мы чиним сайты, дорабатываем модули и делаем так, чтобы магазины работали без сбоев. Более 150 проектов. Первое правило: включить display_errors.

Нужна срочная помощь с белым экраном? Закажите техподдержку OpenCart — разберёмся за час.

Антон Баринов — разработчик интернет-магазинов на OpenCart с 2009 года, основатель opencart-cms.ru.

← Предыдущая Динамическое ценообразование в e-commerce: как менять цены без потери прибыли Следующая → Как рассчитать точку безубыточности интернет-магазина

Комментарии (0)

Пока нет комментариев. Будьте первым!

Оставить комментарий

Ваш комментарий появится после проверки модератором.