На странице Журнал ошибок PHP (Настройки > Производительность > Ошибки PHP (N)) можно просмотреть журнал регистрации ошибок PHP, где N — общее количество ошибок.
Примечание: Данная страница отображается, только если в настройках модуля Монитор производительности указана опция Вести журнал предупреждений PHP.
Фильтр
Форма фильтра используется для фильтрации записей журнала в соответствии с указанными условиями. Нижеследующая таблица описывает параметры, по которым могут выбираться записи.
Поле | Описание |
---|---|
Найти | Позволяет найти записи об ошибках по их основным параметрам. Это поле присутствует, даже если фильтр свернут. |
Хит | Позволяет найти записи по идентификатору хита. |
Класс ошибки | Позволяет осуществлять поиск в журнале по классу (типу) ошибок. |
Файл | Позволяет осуществлять поиск в журнале по файлу, в котором произошла ошибка. |
Текст | Позволяет осуществлять поиск в журнале по тексту ошибки. |
Чтобы отфильтровать ошибки по заданным критериям поиска, нажмите кнопку Найти. Для отображения всех ошибок нажмите кнопку Отменить.
Контекстная панель
Кнопка | Описание |
---|---|
Группировка | Позволяет задать способ группировки записей об ошибках в журнале:
|
Настроить | Переход к диалогу настройки внешнего вида отчетной формы. |
Excel | Экспорт данных из отображаемой таблицы в MS Excel. |
Ошибки PHP
Поле | Описание |
---|---|
ID | Идентификатор записи об ошибке в журнале. |
Хит | Идентификатор хита. |
Класс ошибки | Класс (тип) ошибки. |
Файл | Путь к файлу в системе, в котором произошла ошибка. |
Строка | Номер строки в файле. |
Текст | Текст ошибки. |
© «Битрикс», 2001-2023, «1С-Битрикс», 2023
Наверх
Проверяем логи, битрикс окружение
bitrix, nginx, apache, php, mysql, sendmail, cron
В процессе жизнедеятельности сайт и сервер оставляют после себя различные записи в лог-файлах. Данные из этих файлов желательно периодически разгребать и анализировать, что бы сайт работал быстро и бесперебойно
Для битрикс окружения на centos пути к логам обычно будут такими (зависит от настроек):
- Битрикс: __bx_log.log или log.txt в корне сайта. Зависит от переменной LOG_FILENAME в файле /bitrix/php_interface/dbconn.php
- Apache: /var/log/httpd/error_log
- Nginx: /var/log/nginx/error.log
- PHP: /var/log/php/exceptions.log
- Почта: /home/bitrix/msmtp_default.log
- bash, cron: /var/spool/mail/root и /var/spool/mail/bitrix
- bitrixvm: /opt/webdir/temp (логи запущенных задач)
Как часто надо проверять? Раз в неделю стоит поглядывать, я думаю. Просто что бы убедиться, что эти файлы пусты и ошибок не было.
И как бонус стоит проверить файл /var/log/btmp командой last -f /var/log/btmp если там очень много попыток авторизации, значит доступ к ssh пытаются «брутфорсить». Стоит изменить порт доступа к ssh (в файле /etc/ssh/sshd_config поменять строку «Port 22» на другое значение, разрешить доступ к новому порту в iptables и перезагрузить sshd) Что бы сбросить лог авторизации нужно выполнить команду cat /dev/null > /var/log/btmp
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.
Опубликовано 21 апреля 2017 | Обновлено 24 июля 2020
Возврат к списку
Какие именно ошибки вы хотите отслеживать?
Дебаг в файл:
Существует возможность записывать в отдельный отладочный файл все запросы к базе данных и время их выполнения, для этого необходимо инициализировать переменную $DBDebugToFile, значением «true» в файле /bitrix/php_interface/dbconn.php.
В новом ядре за это отвечают функции: Bitrix\Main\Diag\Debug::dumpToFile и Bitrix\Main\Diag\Debug::writeToFile.
Ручное добавление через addMessage2Log:
// В файле /bitrix/php_interface/dbconn.php определить константу LOG_FILENAME, в которой задать путь к лог-файлу
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log.txt");
В дальнейшем любые массивы, тексты можно отправлять в этот файл посредством
AddMessage2Log("Произвольный текст сообщения или массив", "my_module_id(необязательно)");
Объяснять, что такое логи — нет необходимости. Когда есть логи, то проще разобраться с возникшими проблемами и выяснить, почему они начались. Основные моменты в использовании логов.
Логи не должны занимать всё свободное пространство на диске, т.е. в логи нужно помещать только нужную информацию, а не всё подряд. Устаревшие логи должны удаляться. Для удаления устаревших логов лучше всего настроить задание на cron.
Логи должны быть удобными для изучения — логи с ошибками и логи с диагностическими данными должны помещаться в разные файлы. Желательно разделять логи на временные интервалы — например, ежедневные логи (наиболее распространенный вариант, или, например, по месяцам, или неделям).
Все логи нужно держать в одной папке, чтобы было удобней их изучать (/logs/, /_logs/, /local/logs/ и т.п. ). В целях защиты следует закрыть доступ к папке с логами по http — настраивается в .htacces,
deny from all
и/или добавить к названию файла уникальный идентификатор.
Папку для логов надо предварительно создать и убедиться, что битрикс (веб-сервер) имеет права на запись в нее.
В системе 1С-Битрикс существует 2 вида логов:
ADDMESSAGE2LOG(…)
Это функция из старого ядра. Многие модули пишут через нее отладочную информацию.
Пример настройки места хранения логов, выводимых данной функцией, выглядит так (папка logs/bx должна быть создана):
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"] . "/logs/bx/" . date("Y-m-d") . ".log");
Прописать данную настройку можно, например, в dbconn.php.
СЕКЦИЯ EXCEPTION_HANDLING В ФАЙЛЕ .SETTINGS.PHP
Это уже функционал нового ядра D7.
Битрикс через данный функционал пишет информацию обо всех ошибках и исключениях. Что именно пишется — зависит от настроек.
Пример настройки логов с разделением по дате:
'exception_handling' => array ( 'value' => array ( 'debug' => false, // disables error output to screen // ошибки для вывода в лог 'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_WARNING, 'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_COMPILE_WARNING, 'ignore_silence' => true, 'assertion_throws_exception' => true, 'assertion_error_type' => 256, 'log' => array ( 'settings' => array ( 'file' => "logs/bx_error/" . date("Y-m-d") . ".log", 'log_size' => 1000000, // ~ 1Mb per file ), ), ), 'readonly' => true, ),
ФУНКЦИИ ОТЛАДКИ В ЯДРЕ D7
На замену функции AddMessage2Log в ядре D7 пришли новые функции:
use Bitrix\Main\Diag\Debug; Debug::dumpToFile($_SERVER); // для случаев, когда нужен var_dump Debug::writeToFile($_SERVER); // когда нужен print_r
Также в ядре D7 появились методы, для измерения времени. В старом ядре аналогов не было.
use Bitrix\Main\Diag\Debug; Debug::startTimeLabel("foo"); foo(); Debug::endTimeLabel("foo"); Debug::startTimeLabel("bar"); bar(); Debug::endTimeLabel("bar"); print_r(Debug::getTimeLabels());
Таким образом, правильная расстановка функций логирования и временных меток позволит выявить уязвимости в коде и уменьшить время выдачи сайта от сервера пользователю.
Для просмотра лога ошибок в CMS 1С-Битрикс нужно выполнить следующие действия:
1. Открыть административную панель сайта.
2. Перейти в раздел «Настройки» -> «Настройки продукта» -> «Настройки модулей» и выбрать модуль «Основные настройки».
3. Включить опцию «Логирование ошибок» и сохранить изменения.
4. Далее, необходимо открыть файл «/bitrix/php_interface/dbconn.php» и добавить следующий код перед строкой «define(‘BX_UTF’, true);»:
$debugLogFile = $_SERVER[«DOCUMENT_ROOT»] . «/bitrix/logs/debug.log»;
ini_set(«error_log», $debugLogFile);
5. Создать файл «/bitrix/logs/debug.log» и установить ему права на запись.
6. Обновить страницу сайта или выполнить какое-либо действие, которое вызовет ошибку.
7. После этого можно открыть файл «/bitrix/logs/debug.log» и посмотреть детальную информацию об ошибке.
Важно: после использования лога ошибок необходимо отключить опцию «Логирование ошибок» в настройках модулей, чтобы не забивать диск ненужными данными.