Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Журнал и страницы ошибок

Журнал — файл, в который сайт записывает, что с ним происходило: ошибки, предупреждения, важные события. На рабочем сервере посетитель видит только общую страницу ошибки, а подробности разработчик читает в журнале. Файлы журнала лежат в папке writable/logs, шаблоны страниц ошибок — в app/Views/errors/html.

Запись в журнал

// app/Controllers/Home.php
public function index(): string
{
    log_message('error', 'Проверка журнала');
 
    return 'Запись добавлена';
}

Откройте главную страницу, затем папку writable/logs: в файле с сегодняшней датой, например log-2026-03-02.log, появится строка с уровнем ERROR, временем и текстом. На каждый день создаётся свой файл.

Уровни

Первый аргумент log_message() — уровень важности:

НомерУровеньКогда использовать
1emergencyСайт не работает
2alertНужно срочное вмешательство
3criticalОтказала важная часть
4errorОшибка в одном запросе
5warningЧто-то подозрительное
6noticeЗаметное, но нормальное событие
7infoОбычные события: вход, заказ
8debugПодробности для отладки

Данные в сообщении

Значения подставляют на место меток в фигурных скобках:

log_message('info', 'Статья {id} опубликована пользователем {user}', [
    'id' => $post['id'],
    'user' => session('user_id'),
]);

В журнале окажется строка вида «Статья 5 опубликована пользователем 1».

Порог записи

Какие уровни попадают в файл, задаёт свойство $threshold в app/Config/Logger.php:

// app/Config/Logger.php
public $threshold = (ENVIRONMENT === 'production') ? 4 : 9;

Число 4 означает «записывать уровни от 1 до 4», то есть ошибки и всё, что серьёзнее. Поэтому на рабочем сервере сообщения info и debug в журнал не попадают, пока порог не повышен.

Страницы ошибок

Когда происходит ошибка, CodeIgniter сам записывает её в журнал и выводит один из шаблонов папки app/Views/errors/html:

ФайлКогда показывается
error_404.phpСтраница не найдена
error_exception.phpЛюбая ошибка в режиме development: текст, файл, строка
production.phpЛюбая ошибка в режиме production: общая фраза без подробностей

Эти файлы — обычные шаблоны. Откройте error_404.php и замените разметку своей:

<!-- app/Views/errors/html/error_404.php -->
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <title>Страница не найдена</title>
</head>
<body>
    <h1>Такой страницы нет</h1>
    <p><a href="/">Вернуться на главную</a></p>
</body>
</html>

Откройте несуществующий адрес, например /nothing, — появится ваша страница. Её же увидит посетитель, когда контроллер бросает PageNotFoundException.

Панель отладки

В режиме development внизу каждой страницы есть панель отладки. В ней видны запросы к базе, время работы, подключённые шаблоны и записи журнала текущего запроса — заглядывать в файл не обязательно.

Частая ошибка

Папка writable должна быть доступна веб-серверу для записи. Если прав нет, журнал не создаётся, и об ошибках на сервере никто не узнаёт. После переноса проекта откройте writable/logs и убедитесь, что там появляются файлы. Сама папка не должна быть доступна из браузера — в журнале встречаются адреса и данные запросов.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.