Всем привет. На сегодняшнем уроке мы научимся включать отображение ошибок. Рано или поздно все мы сталкиваемся с проблемами то у нас модули не отображаются то мы получаем белую страницу вместо сайта. Для того чтоб увидеть в чем проблема нам и нужно включить отображение ошибок.
Рассмотрим включение ошибок на всех версиях PrestaShop
Для PrestaShop 1.4 и 1.3
Открываем файл:
config/config.inc.php
Ищем:
@ini_set('display_errors', 'off');
define('_PS_DEBUG_SQL_', false);
Заменяем на:
@ini_set('display_errors', 'on');
define('_PS_DEBUG_SQL_', true);
Вторая строчка поможет нам увидеть ошибки SQL-запросов.
Для PrestaShop 1.5
Открываем файл:
config/defines.inc.php
Ищем:
define('_PS_MODE_DEV_', false);
Заменяем на:
define('_PS_MODE_DEV_', true);
Для PrestaShop 1.6 & 1.7
Открываем файл:
config/defines.inc.php
Ищем:
if (!defined('_PS_MODE_DEV_')) {
define('_PS_MODE_DEV_', false);
}
Заменяем на:
if (!defined('_PS_MODE_DEV_')) {
define('_PS_MODE_DEV_', true);
}
Вот и все. Всем спасибо за внимание.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Для показа ошибок в Prestashop существуют встроенные функции.
Для Prestashop 1.5
Можно включить режим отладки в админке сайта
Панель администратора > Расширенные параметры > Производительность
Кеш: Нет
Принудительная компиляция: Да
Режим debug: Да
Или изменить в файле /config/defines.inc.php
/* Debug only */
на
define('_PS_MODE_DEV_', false);
/* Debug only */
define('_PS_MODE_DEV_', true);
изменить
define('_PS_DEBUG_PROFILING_', false);
на
define('_PS_DEBUG_PROFILING_', true);
Для Prestashop 1.4
В файле config/config.inc.php
@ini_set('display_errors', 'off');
заменить на
define('_PS_DEBUG_SQL_', false);
@ini_set('display_errors', 'on');
define('_PS_DEBUG_SQL_', 'true');
Перейти к содержимому
Иногда вам необходимо увидеть детальные сообщения об ошибках. Часто при редактировании файлов или настроек PrestaShop могут возникать различные проблемы и обычно вместо описания возникших ошибок вы видите просто белый экран и короткий текст «Error 500».
Конечно же, это никак не помогает решить проблемы.
Поэтому вот краткая инструкция для включения отображения ошибок в PrestaShop.
PrestaShop 1.7 — 8+
В PrestaShop 1.7 и последующих версиях активация режима отладки довольно проста, без необходимости ручного редактирования кода:
Войдите в ваш бэк-офис PrestaShop.
- Перейдите в раздел «Расширенные параметры >> Производительность».
- В настройках производительности найдите блок «Режим отладки«.
- Переключите выбор «Режим отладки» на «Да», чтобы включить его.
- Нажмите кнопку «Сохранить«, чтобы применить изменения.
Если ошибка не позволяет получить доступ к бэк-офису, или в любом другом случае вы можете воспользоваться альтернативным способом:
PrestaShop 1.5.3 — 1.6.1, или альтернативный метод для PS 1.7 — 8+
Откройте этот файл:
/config/defines.inc.php
(это можно сделать с помощью FTP)
Найдите следующий код:
1 |
define(‘_PS_MODE_DEV_’, false); |
Измените его на:
1 |
define(‘_PS_MODE_DEV_’, true); |
PrestaShop 1.4 — 1.5.3
Откройте этот файл:
/config/config.inc.php
Найдите следующий код:
1 |
@ini_set(‘display_errors’, ‘off’); |
Измените его на:
Готово!
Не забудьте выключить отображение ошибок, когда закончите. Иначе покупатели могут увидеть много лишней отладочной информации.
Появление белого экрана при попытке зайти в магазин PrestaShop означает наличие ошибок сервера.
Отображение ошибок
1. Прежде всего, нужно включить встроенный в PrestaShop Режим отладки (Debug Mode). Откройте файл configdefines.inc.php и найдите следующую строку:
define('_PS_MODE_DEV_', false);
измените ее следующим образом
define('_PS_MODE_DEV_', true);
Логирование ошибок
2. Чтобы записать ошибки без отображения их на сайте, нужно открыть файл index.php из корневой папки PrestaShop и добавить сверху следующий код:
<?php error_reporting(0); $old_error_handler = set_error_handler("userErrorHandler"); function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) { $time=date("d M Y H:i:s"); // Get the error type from the error number $errortype = array (1 => "Error", 2 => "Warning", 4 => "Parsing Error", 8 => "Notice", 16 => "Core Error", 32 => "Core Warning", 64 => "Compile Error", 128 => "Compile Warning", 256 => "User Error", 512 => "User Warning", 1024 => "User Notice"); $errlevel=$errortype[$errno]; //Write error to log file (CSV format) $errfile=fopen("errors.csv","a"); fputs($errfile,""$time","$filename: $linenum","($errlevel) $errmsg"rn"); fclose($errfile); if($errno!=2 && $errno!=8) { //Terminate script if fatal error die("A fatal error has occurred. Script execution has been aborted"); } } ?>
Сохраните изменения и зайдите на свой сайт или в админ панель Prestashop.
После этого на сервере появится файл errors.csv . В нем будет вестись запись возникающих ошибок.
Включение отладочного режима
Включение отладочного режима
По умолчанию в PrestaShop отображение ошибок отключено, поэтому при возникновении ошибок, скорее всего вы увидите просто чистую страницу. Поэтому первым этапом поиска ошибок является включение их отображения.
Отображение ошибок
Для PrestaShop 1.4 и 1.3
Для отображения ошибок в файле configconfig.inc.php заменяем
@ini_set('display_errors', 'off'); define('_PS_DEBUG_SQL_', false);
на
@ini_set('display_errors', 'on'); define('_PS_DEBUG_SQL_', true);
Вторая строчка позволяет дополнительно отображать ошибки, возникающие при выполнение SQL запросов.
Для PrestaShop 1.5
В файле configdefines.inc.php заменяем
define('_PS_MODE_DEV_', false);
на
define('_PS_MODE_DEV_', true);
Логирование ошибок
В большинстве случаев включения простого отображения ошибок достаточно, но в некоторых случаях, например когда страница не отображается непосредственно пользователю, а используется для взаимодействия со сторонними сервисами, требуется запись возникающих ошибок в файл.
Для этого в .htaccess добавляем следующие строчки:
php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag log_errors on php_flag ignore_repeated_errors off php_flag ignore_repeated_source off php_flag report_memleaks on php_flag track_errors on php_value docref_root 0 php_value docref_ext 0 php_value error_log /home/path/public_html/domain/PHP_errors.log php_value error_reporting -1 php_value log_errors_max_len 0
Где /home/path/public_html/domain/ путь к директории с вашим сайтом. Предварительно нужно создать PHP_errors.log и выставить для него права на запись.
Настройка Smarty
После редактирования шаблона могут возникать некоторые ошибки, отловить которые вышеперечисленными методами не получится.
Для отладки шаблонов Smarty нужно в configsmarty.config.inc.php раскомментировать (удалить / /) строку:
$smarty->debugging = true;
Также может вызывать недоумение ситуация, когда изменения в шаблоне не приводят к ожидаемому результату. Это происходит по причине того, что шаблоны компилируются в php код, и затем кэшируются. Чтобы этого не происходило нужно в configsmarty.config.inc.php заменить:
$smarty->force_compile = false;
на
$smarty->force_compile = true;