Включение отладочного режима
Включение отладочного режима
По умолчанию в PrestaShop отображение ошибок отключено, поэтому при возникновении ошибок, скорее всего вы увидите просто чистую страницу. Поэтому первым этапом поиска ошибок является включение их отображения.
Отображение ошибок
@ini_set('display_errors', 'off'); define('_PS_DEBUG_SQL_', false);
на
@ini_set('display_errors', 'on'); define('_PS_DEBUG_SQL_', true);
Вторая строчка позволяет дополнительно отображать ошибки, возникающие при выполнение SQL запросов.
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 нужно в config\smarty.config.inc.php раскомментировать (удалить / /) строку:
$smarty->debugging = true;
Также может вызывать недоумение ситуация, когда изменения в шаблоне не приводят к ожидаемому результату. Это происходит по причине того, что шаблоны компилируются в php код, и затем кэшируются. Чтобы этого не происходило нужно в config\smarty.config.inc.php заменить:
$smarty->force_compile = false;
на
$smarty->force_compile = true;