Белый экран в 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.
Комментарии (0)
Пока нет комментариев. Будьте первым!
Оставить комментарий