Поэтому всем, кто делает сайты на Альто очень полезно будет почитать статью «Работа над ошибками» в Alto CMS.
Но с момента написания той статьи в движок были добавлены новые возможности, позволяющие еще лучше находить и понимать возникающие на сайте ошибки (эта статья пишется для версии 1.1.13). Для начала важно учесть, что дополнительный механизм отслеживания ошибок включается заданием константы DEBUG=1. Это можно сделать двумя способами:
1) Добавить файл engine/config.defines.php такого содержания:
<?php
define('DEBUG', 1);
2) В файл /index.php сразу после первой строки с <?php добавить строчку:define('DEBUG', 1);
Оба варианта работают совершенно одинаково, выбирайте, какой из них вам больше нравится.После этого движок будет работать в режиме отладки. Что вам это дает:
Дополнительная информация в логах SQL-запросов
Если у вас включено логгирование SQL-запросов (конфиг-параметр sys.logs.sql_query=true), то в него дополнительно будет записываться информация, в каком конкретно месте движка вызывается SQL-запрос. Ведь ошибки в логике работы сайта могут заключаться и в том. что где-то неверно формируется запрос к базе данных. И эта опция поможет быстрее найти источник ошибочного запроса.Проверка подключаемых файлов на «UTF-8 without BOM»
Помните — все файлы движка должны быть в формате «UTF-8 without BOM». Очень распространенная ошибка (особенно среди новичков) — правка файлов в стандартном Блокноте Windows и запись в неверном формате. И эти файлы при подключении могут давать самый непредсказуемый эффект. Чтобы это обнаружить, нужно добавить в конфиг-файл app/config/config.local.php такую строку:$config['sys']['include']['check_file'] = true;
И тогда все подключаемые файлы будут предварительно проверяться, и в случае обнаружения проблем информация об этом будет записываться в файл ошибок error.log. Правда, тут есть нюанс: эта проверка будет выполняться, только если файл подключается средствами движка, т.к. одной из следующих функций: F::IncludeFile(...) или F::IncludeLib(...) (или через их аналоги — F::File_IncludeFile(...) или F::File_IncludeLib(...)).
Почему не defined('DEBUG') or define('DEBUG', 1);?
Можно автоматом включать, если включен дебаг.
А вот это, пожалуй, стоит делать