0 голосов
от (610 баллов) в категории Исключение неисправностей

Оригинальное сообщение, которое отображает PrestaShop: "500 Server Error. Oops, something went wrong."

Скриншот такой страницы:

1 Ответ

0 голосов
от (610 баллов)
редактировать от

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

Для начала надо получить конкретный текст ошибки, т.к. сообщение «500 Server Error» говорит лишь о наличии ошибки на сервере, но конкретно — ни о чём. Это сделано специально разработчиками PrestaShop, чтобы обычный пользователь (потенциальный покупатель в вашем интернет-магазине) не видел не понятного для него текста об ошибке, чтобы он не «пугался».

Сообщение «500 Server Error» отображается при условиях: режим отладки PrestaShop выключен, а сама ошибка относится к обрабатываемому классу ошибок: PrestaShopException. В этом случае, конкретный текст ошибки записывается в файл. В свежих версиях PrestaShop 1.7 для хранения описания ошибки создаётся файл в директории «/var/logs» с наименованием, содержащим дату, когда эта ошибка произошла, например, «20200929_exception.log» (произошла в 2020 году, 09 месяца, 29 числа). В старых версиях PrestaShop 1.7 директория с файлами находится в другом месте: «/app/logs». А в PrestaShop 1.6 и 1.5 — в директории «/log». Файл содержит список с детальным описанием ошибок, произошедших за ту же дату. Для каждой ошибки приводится следующая полезная информация: дата и время возникновения ошибки; текст ошибки; файл и номер строки, в которой она произошла. Пример описания ошибки в файле:

2020/09/29 - 14:04:25: Link to database cannot be established: SQLSTATE[08004] [1040] Too many connections at line 127 in file classes/db/DbPDO.php

В случае, когда режим отладки PrestaShop выключен, но сама ошибка не относится к обрабатываемому классу ошибок PrestaShopException, то будет отображена пустая страница (белый экран, как иногда говорят пользователи). В этом случае PrestaShop не запишет ошибку в файл, то есть, узнать, какая конкретно ошибка произошла у пользователя будет сложнее (для этого нужно изучать логи ошибок веб-сервера за определённую дату — не стану раскрывать данную тему в деталях; все панели управления имеют раздел, касающийся логов веб-сервера; путь к логам веб-сервера в каждой из операционных систем - отличается; веб-сервер может также быть использован разный, но зачастую, это Apache2).

Если вам известно, как воспроизвести ошибку (например, по словам пользователя), то вы можете включить режим отладки PrestaShop и выполнить порядок действий до обнаружения ошибки — в этом случае, она будет отображена уже на странице браузера. Причём, информация может быть дана более детальная (со стеком вызова методов/функций).

Для исправления ошибки нужно изучить: текст об ошибке, конкретную строку кода, где она произошла и принять решение по её исправлению. Для обычного пользователя — это довольно сложная задача. Поэтому у меня такой, довольно очевидный, совет: скопируйте текст ошибки и вставьте его в строку поиска поисковика (Google, Yandex), в начало добавив версию PrestaShop и само слово PrestaShop, например:

PrestaShop 1.7 Link to database cannot be established: SQLSTATE[08004] [1040] Too many connections at line 127 in file classes/db/DbPDO.php

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

Добро пожаловать на сайт. Здесь можно задавать вопросы по CMS PrestaShop и получать на них ответы.
...