Битрикс settings php скрыть вывод ошибок

Bitrix(d7). File .settings.php API


Настройки могут задаваться в файле .settings.php и .settings_extra.php. Базовый файл настроек содержит неизменные настройки,
к которым есть API. Файл .settings_extra.php может содержать произвольный код, который меняет настройки динамически.
Соответственно к нему нет API.

Кодировка

Пример:

  /*Отвечает за кодиорвку*/
  'utf_mode' => 
  array (
    'value' => true,
    'readonly' => true,
  ),
  • readonly — ключ означает, что нельзя изменить значение через API.
  • valuetrue, если используется utf и false в обратном случае.

Если задана другая кодировка (не UTF-8):

  /*Отвечает за кодиорвку*/
  'utf_mode' => 
  array (
    'value' => false,
    'readonly' => true,
  ),
  • valuefalse, то есть не используется UTF-8
  /*Отвечает за кодиорвку по умолчанию*/
  'default_charset' => 
  array (
    'value' => 'cp866',
    'readonly' => false,
  ),
  • value — указание кодировки по умолчанию

Кэширование

Пример:

  /*Отвечает за кэширование*/
  'cache' => 
  array (
    'value' => 
    array (
      'type' => 'memcache', /*memcache, apc, xcache, files, none*/
      'sid' => '',
      'memcache' => 
      array (
        'host' => '127.0.0.1',
      ),
    ),
    'readonly' => false,
  ),
  • Подробнее о настройке кэширвоания
  • Подробнее о подключении собственного типа кэширвоания

Так же доступных специальные флаги для кэширования опций модулей:

  /*Время кэширования в секундах*/
  'cache_flags' => 
  array (
    'value' => 
    array (
      'config_options' => 3600,
      'site_domain' => 3600,
    ),
    'readonly' => false,
  ),
  • readonly — ключ означает, что нельзя изменить значение через API.
  • site_domain — Время кэширования куки в секундах
  • config_options — Время кэширования опций модулей в секундах

Обработка ошибок

Пример:

'exception_handling' => array (
    'value' => array (
      'debug' => false,
      'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE,
      'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_USER_WARNING & ~E_USER_NOTICE & ~E_COMPILE_WARNING & ~E_DEPRECATED,
      'ignore_silence' => false,
      'assertion_throws_exception' => true,
      'assertion_error_type' => 256,
      'log' => array (
        'settings' => array (
          'file' => 'bitrix/modules/error.log',
          'log_size' => 1000000,
        ),
      ),
    ),
    'readonly' => false,
  ),
  • readonly ключ означает, что нельзя изменить значение через API.
  • debug — Ключ отвечает за то, будет ли выведена ошибка на страницу в браузере.
  • handled_errors_types — Tипы ошибок, которые система отлавливает.
  • exception_errors_types — Типы ошибок, при которых система выбрасывает исключение.
  • ignore_silence — Ключ отменяет действие оператора управления ошибками (@).
  • log — В ключе задаются параметры логирования ошибок.
  • assertion_throws_exception — Включить поддержку assert
  • assertion_error_type — Какие типы ошибок обрабатывать для assert

Если в корне сайта лежит файл error.php и выключен вывод ошибок на экран, то этот файл будет подключен в случае возникновения необработанного исключения.

Логирование

Пример:

'log' => array (
   'settings' => array (
      'file' => 'bitrix/modules/error.log',
      'log_size' => 1000000,
   ),
),
  • readonly ключ означает, что нельзя изменить значение через API.
  • file — Путь к файлу лога относительно корневой папки сайта.
  • log_size — Максимальный размер файла лога в байтах.

Пример:

'log' => array(
   'class_name' => 'MyLog',
   'extension' => 'MyLogExt',
   'required_file' => 'modules/mylog.module/mylog.php'
   'settings' => array(
    ),
),
  • class_name — Имя класса (с указанием namespace).
  • extension — PHP расширение необходимое для исползования.
  • required_file — Файл, который необходим дляиспользования (например автозагрузка).
  • settings — массив настроек.

Пример использования своего собственного логера (в качестве примера взят monolog-adapter):

return array(
    'exception_handling' => array(
        'value' => array(
            'log' => array(
                'class_name' => 'BexMonologExceptionHandlerLog',
                'settings' => array(
                    'logger' => 'app'
                ),
            ),
        ),
        'readonly' => false
    ),
    'monolog' => array(
        'value' => array(
            'handlers' => array(
                'default' => array(
                    'class' => 'MonologHandlerStreamHandler',
                    'level' => 'DEBUG',
                    'stream' => '/path/to/logs/app.log'
                ),
                'feedback_event_log' => array(
                    'class' => 'BexMonologHandlerBitrixHandler',
                    'level' => 'DEBUG',
                    'event' => 'TYPE_FOR_EVENT_LOG',
                    'module' => 'vendor.module'
                ),
            ),
            'loggers' => array(
                'app' => array(
                    'handlers'=> array('default'),
                ),
                'feedback' => array(
                    'handlers'=> array('feedback_event_log'),
                )
            )
        ),
        'readonly' => false
    )
);
  • Подробнее об адаптере для одной из самых мощных и популярных библиотек для логирования (для 1С-Битрикс)
  • Подробнее библиотеке Monolog

Соединения с базами данных

/*Отвечает за соединения с базами данных*/
  'connections' => 
  array (
    'value' => 
    array (
      'default' => 
      array (
        'className' => 'BitrixMainDBMysqlConnection',
        'host' => '',
        'database' => '',
        'login' => '',
        'password' => '',
        'options' => 2,
        'handlersocket' => array (
           'read' => 'fast'
         ),
      ),
    ),
    'fast' => array (
      'className' => 'BitrixNameDataHsphpReadConnection',
      'host' => 'localhost:31006',
     ),
    'readonly' => true,
  ),
  • readonly ключ означает, что нельзя изменить значение через API.
  • className — имя класса, которое отвечает за работу с базой данных.
  • host — хост, для соединения с базой данных
  • database — имя базы данных
  • password — пароль к базе данных
  • handlersocket — указывается какое соединение использовать. Необходимо создать подключение, где будут указаны класс и хост
  • options — параметры соединения, например 1 — постоянное соединение, 2 — простое соединение, 3 — это оба:
'options' =>  ((!defined("DBPersistent") || DBPersistent) ? 1 : 0) | ((defined("DELAY_DB_CONNECT") && DELAY_DB_CONNECT === true) ? 2 : 0)

Обычное соединение устанавливается каждый раз во время выполнения страницы при первом обращении к базе данных. Установленное соединение освобождается (в большинстве случаев и закрывается) после завершения страницы.

Постоянное соединение (функции PHP обычно называются *_pconnect) устанавливается один раз при первом обращении к базе данных и при повторных обращениях, даже из других страниц, используются уже открытые соединения к базе данных.

default — база данных используемая по умолчанию, можно задать несколько соединений с базами данных, затем использовать в проекте разные соединения.

Рекомендуется вместо BitrixMainDBMysqlConnection использовать BitrixMainDBMysqliConnection

Обращение к другим соединениям с базами данных:

/*  connection_name - имя соединения, указанное в .settings.php. 
/*  Bitrix использует соединение по умолчанию default
*/
$connection = BitrixMainApplication::getConnection('connection_name');

Подробнее о базах данных в 1С — Битрикс

Дополнительно

  /*Отключение сброса кэша, для решения некоторых проблем с php Zend Optimizer+*/
  'no_accelerator_reset' => 
  array (
    'value' => false,
    'readonly' => false,
  ),

Применение данной настрйоки я не нашёл за исключением решения проблем с php Zend Optimizer+

  /*Установка константы BX_HTTP_STATUS используется в Configuration::wnc*/
  'http_status' => 
  array (
    'value' => true,
    'readonly' => false,
  ),
  

Применение данной настройки находится в методе, который формирует файл .settings.php (Configuration::wnc), так же в фигуриует в методе CHTTP:SetStatus()

Ссылки по теме

Bitrix

  • Документация
  • Скрипт для настроек
  • Базы данных

Bitrix-expert

  • «Битрикс» и PSR-3

Bxapi.ru

  • BitrixMainConfigConfiguration
  • BitrixMainConfigConfiguration::getInstance()
  • BitrixMainConfigConfiguration::get()
  • BitrixMainConfigConfiguration::add()
  • BitrixMainConfigConfiguration::saveConfiguration()

Git

  • Monolog adapter for Bitrix CMS
  • Подробнее библиотеке Monolog

PHP

  • extension_loaded

Сканер безопасности показывает ошибку и рекомендует отключить расширенный вывод ошибок в файле settings.php. Выставил параметр debug в значение false — ошибка не пропала. Кеш чистил

'exception_handling' => 
  array (
    'value' => 
    array (
      'debug' => fasle,
      'handled_errors_types' => 4437,
      'exception_errors_types' => 4437,
      'ignore_silence' => true,
      'assertion_throws_exception' => true,
      'assertion_error_type' => 256,
      'log' =>

Если на экране появилась ошибка:

При выполнении скрипта возникла ошибка. Включить расширенный вывод ошибок можно в файле настроек .settings.php

Открываем файл .settings.php находим debug и заменяем false на true:

'exception_handling' =>
array (
'value' =>
array (
'debug' => false, // изменяем значение на true
'handled_errors_types' => 20853,
'exception_errors_types' => 20853,
'ignore_silence' => false,
'assertion_throws_exception' => true,
'assertion_error_type' => 256,
'log' =>
array (
'settings' =>
array (
'file' => NULL,
'log_size' => NULL,
),
),
),
'readonly' => false,
),

В результате чего на экране будет подробное описание ошибки:

[Error]
Class 'Assets' not found (0)
D:worklocalhost11wwwlocaltemplatesvoguis_indexheader.php:17
#0: include_once
D:worklocalhost11wwwbitrixmodulesmainincludeprolog_after.php:96
#1: require(string)
D:worklocalhost11wwwbitrixmodulesmainincludeprolog.php:11
#2: require_once(string)
D:worklocalhost11wwwbitrixheader.php:1
#3: require(string)
D:worklocalhost11wwwindex.php:2

 

Всем добрый день. Знающие люди подскажите как отключить Расширенный вывод ошибок
Сканер безопасности жалуется. Пишет что Выключить в файле настроек .settings.php.
Где и что нужно удалить в данном файле?

 

Попробуйте в файле /bitrix/.settings.php элемент массива ‘debug’ => true выставить в значение false

 

Спасибо,помогло. в техподдержку написал. Ответ был таким же

 

Огромное спасибо — сработало!

 
 

Пользователь 231375

Посетитель

Сообщений: 50
Баллов: 5
Регистрация: 11.12.2013

#6

21.11.2020 02:36:37

Цитата
Алексей РџРѕРїРѕРІРёС‡ написал:
На что это влияет?

Пути увидят и взломают ламера.

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

Включить их просто, для этого надо собственно открыть этот файл по FTP или через функционал Битрикс по следующему пути в админке битрикс

Рабочий стол->Контент->Структура сайта->Файлы и папки->bitrix

Здесь представлен многомерный массив данных, ключ-значение. Это основные настройки вашего сайта на битриксе.

Что бы включить отображение ошибок находим строку ‘debug’  которая находится внутри ‘exception_handling’->’value’ и ставим ей значение true вместо false.

Что бы настроить какие именно ошибки мы хотим отображать в ключе ‘exception_errors_types’  указываем код ошибок, например 29687, но он мало понятен, поэтому лучше использовать в значение данного ключа константы через пробел:

‘handled_errors_types’ => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED, 

Здесь мы  перечислили все ошибки, предупредения и тд. Если нужно вывести только ошибки, то остальные константы можно просто убрать, поскольку уведомление 

Загрузка

  • Битрикс 24 ошибка подключения к серверу ошибка передачи данных
  • Битрикс 24 ошибка импорта pd2 ответ сервера не опознан
  • Битрикс 24 ошибка авторизации почты
  • Битрикс 24 отправка почтовых уведомлений функция работает неправильно требуется устранить ошибки
  • Бит четности позволяет обнаружить сколько ошибок