Включение расширенного вывода ошибок в settings.php на Bitrix

Включение расширенного вывода ошибок в settings.php на Bitrix

от автора

в

Если вы когда-нибудь сталкивались с проблемами на вашем сайте на Bitrix, то, скорее всего, вам хотелось бы быстро и точно выяснить, в чём дело. И вот здесь на помощь приходит расширенный вывод ошибок. В этой статье я расскажу, как включить расширенный вывод ошибок в файле settings.php в Bitrix, а также объясню, зачем это нужно и как это может помочь вам в решении проблем.

Зачем нужен расширенный вывод ошибок?

Когда ваш сайт работает неправильно, обычные сообщения об ошибках могту быть недостаточно информативными. Они часто просто указывают на наличие ошибки, но не говорят, что именно пошло не так. Расширенный вывод ошибок позволят увидеть более детальную информацию, включая:

  • Полный стек вызовов (trace)
  • Параметры запросов и ответов
  • Информацию о серверной среде
  • Логирование всех действий

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

Как включить расширенный вывод ошибок

Шаг 1: Найдите файл settings.php

Для начала, нужно найти файл settings.php, который обычно располагается в корне вашего преокта Bitrix. Если вы используете типовую установку, файл будет находиться по пути:

/bitrix/.settings.php

Шаг 2: Откройте файл для редактирования

Откройте файл settings.php в вашем любимом текстовом редакторе. Вы можете использовать любой текстовый редактор, который поддерживает редактирование PHP-файлов, например, Notepad++, Sublime Text или Visual Studio Code.

Шаг 3: Внесите изменения

Теперь мы добавим или изменим несколько параметров в файле settings.php для включения расширенного вывода ошибок. Найдите секцию error_handling и добавьте следующие строки:

'exception_handling' => [
    'debug' => true,
    'handled_errors_types' => E_ALL & ~E_NOTICE,
    'exception_errors_types' => E_ALL & ~E_NOTICE,
    'ignore_silence' => true,
    'assertion_throws_exception' => true,
    'assertion_error_type' => E_USER_ERROR,
    'log' => [
        'settings' => [
            'file' => [
                'enabled' => true,
                'file' => $_SERVER['DOCUMENT_ROOT'] . '/bitrix/logs/php.log',
                'log_size' => 1000000,
            ],
        ],
    ],
],

Эти настройки включают режим отладки, регистрируют все ошибки, кроме уведомлений, и записывают лог в файл php.log, расположенный в директории /bitrix/logs/.

Шаг 4: Сохраните изменения и перезагрузите сервер

После внесения изменений сохраните файл и перезагрузите ваш веб-сервер. Это можно сделать, выполинв команду:

sudo service apache2 restart

или

sudo service nginx restart

в зависимости от того, какой веб-сервер вы используете.

Примеры использования

Пример 1: Не работает форма обратной связи

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

Uncaught Exception: Undefined variable: email in /bitrix/components/mycomponent/form.php on line 45

Теперь вы знаете, что переменная $email не определена в скрипте form.php, и можете быстро это исправить.

Пример 2: Проблемы с подключением к базе данных

Если ваш сайт не может подключиться к базе данных, расширенный вывод ошибок может показать более детальное сообщение, например:

PDOException: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)

Это сообщение указывает, что проблема связана с некорректными данными для подключения к базе данных. Вы можете проверить настройки в файле dbconn.php и убедиться, что все данные введены правильно.

Советы по безопасности

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

Как отключить вывод ошибок для пользователей

Чтобы пользователи не видели ошибки, но вы могли их отлаживать, можно использовать следующий код:

if ($_SERVER['REMOTE_ADDR'] == 'ваш_ip_адрес') {
    ini_set('display_errors', 1);
} else {
    ini_set('display_errors', 0);
}

Этот код показывает ошибки только для вашего IP-адреса.


Автор статьи:

Обновлено:

30.05.2024



Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *