Помилки OpenCart: як читати логи й знаходити причину
Зміст
Стаття
Магазин видав білу сторінку, помилку 500 або просто перестав щось робити. Перше, що варто зрозуміти: майже завжди причина вже записана в лог, і питання лише в тому, у який саме.
Чотири різні логи
- Лог OpenCart. Тут опиняються помилки самого магазину — попередження PHP і винятки. Шлях залежить від збірки: у більшості випадків це тека сховища, яка може лежати поза кореневою текою сайту.
- Лог PHP. Фатальні помилки, які зупиняють виконання до того, як OpenCart встигне їх записати.
- Лог веб-сервера. Помилки 500 без деталей, проблеми з правами доступу, тайм-аути.
- Лог бази даних. Повільні запити й помилки з'єднання.
Типова ситуація: людина дивиться лог магазину, бачить, що він порожній, і робить висновок «помилок немає». А фатальна помилка лежить у логу PHP, бо до запису в лог магазину виконання не дійшло.
Що означають найчастіші повідомлення
Біла сторінка
Вивід помилок вимкнений, а виконання зупинилось. Дивитись треба лог PHP. Найчастіші причини — несумісність модуля з версією PHP або вичерпання пам'яті.
Помилка 500
Загальна відповідь сервера, деталі — в його логу. У магазинах це часто наслідок помилки в файлі конфігурації веб-сервера або збою в модифікації.
Попередження про неіснуючий ключ масиву
Код очікує дані, яких немає. Саме по собі це не зупиняє сторінку, але часто пояснює, чому блок не відображається. Після переходу на PHP 8 таких записів різко більшає.
Помилка завантаження шаблону
Шаблон не знайдено або він містить синтаксис, який поточна версія шаблонізатора не розуміє. Класика — тема, написана під стару версію.
Особливість OpenCart: зміни не там, де ви думаєте
Найпідступніша річ у діагностиці магазину — механізм модифікацій. Виконується не той файл, який ви редагуєте, а його згенерована копія. Ви правите контролер, зберігаєте, оновлюєте сторінку — і нічого не змінюється, бо магазин виконує стару версію з теки модифікацій.
Тому в шляху з логу варто уважно дивитись, звідки саме файл: із коду сайту чи зі сховища модифікацій. Це одразу підказує, у чому справа.
Як звузити пошук
- Відтворити помилку і подивитись час у логах — це відсіює старі записи.
- Згадати, що змінювалось перед появою проблеми: оновлення, новий модуль, зміна версії PHP.
- Якщо підозра на модуль — вимкнути його й перевірити.
- Якщо не допомогло — вимикати по черзі, доки не знайдеться винуватець.
Коли причина не знаходиться або помилка виникає лише в бойових умовах — є послуга виправлення помилок та багів. Якщо збої почались після зміни версії PHP, дивіться в бік оновлення сумісності; якщо сторінки віддають помилки під навантаженням — це вже питання сервера.