27  /  432

Настройка параметров ядра

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

Настройки в новом ядре выполняются в файле /bitrix/.settings.php. Напомним, что в старом ядре аналогичные настройки выполнялись в файле /bitrix/php_interface/dbconn.php. Файл .settings.php структурно сильно отличается от прежнего dbconn.php.

Править параметры можно с помощью класса Configuration (Bitrix\Main\Config\Configuration).

Примечание: Некоторые секции файла настроек содержат параметр readonly. Этот параметр означает, что данные настройки не будут изменены через API.

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

Описание параметров

Ниже описаны параметры, которые возможны для изменения:


Секция cache

Отвечает за настройки кеширования, позволяет задать способ кеширования и его параметры.

  'cache' => array (
    'value' => array (
      'type' => 'files',
    ),
    'readonly' => false,
  ),
Параметр Значение
type В качестве значения можно задать:
  • memcache
  • apc
  • xcache
  • files
  • none
или указать массив со значениями:
  • class_name - класс, реализующий интерфейс ICacheEngine,
  • required_file - подключаемый файл с путем относительно папки /bitrix или /local (если требуется),
  • required_remote_file - подключаемый файл с абсолютным путем (если требуется),
  • extension - будет произведена попытка подключения расширения через extension_loaded. И только тогда подключится уже указанный класс.

Примечание: Кроме type могут быть дополнительные параметры, если они нужны конкретному классу кеширования.

Примечание: Настройки memcache могут задаваться так же в файле /bitrix/.settings_extra.php.

Пример файла /bitrix/.settings_extra.php

В базовом файле .settings.php содержатся неизменные настройки, к которым есть API. Файл .settings_extra.php может содержать произвольный код, который меняет настройки динамически в зависимости от каких-либо факторов. Соответственно для изменения настроек в этом файле нет API. Единственно в ходе выполнения этого произвольного кода должен быть возвращен массив подобной структуры базового файла.



Секция exception_handling

Отвечает за обработку ошибок.

  '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,
  ),
Параметр Значение
debug Ключ отвечает за то, будет ли выведена ошибка на страницу в браузере. Выводить ошибки рекомендуется только на время разработки или отладки. Иначе потенциально может быть разглашение информации.
handled_errors_types В ключе задаются типы ошибок, которые система отлавливает (не игнорирует).
exception_errors_types В ключе задаются типы ошибок, при которых система выбрасывает исключение.
ignore_silence Ключ отменяет действие оператора управления ошибками (@).
log В ключе задаются параметры логирования ошибок. Если ключа нет - логирования не будет. Если задать как показано в примере:
'log' => array (
   'settings' => array (
      'file' => 'bitrix/modules/error.log',
      'log_size' => 1000000,
   ),
),
то логироваться будет в файл с ограничением его размера. Если в корне сайта лежит файл error.php и выключен вывод ошибок на экран, то этот файл будет подключен в случае возникновения необработанного исключения.
Если задать в общем случае, то можно логгировать куда угодно:
'log' => array(
   'class_name' => 'MyLog', // custom log class, must extends ExceptionHandlerLog; 
                            // can be omited, in this case default Diag\FileExceptionHandlerLog will be used
   'extension' => 'MyLogExt', // php extension, is used only with 'class_name'
   'required_file' => 'modules/mylog.module/mylog.php' // included file, is used only with 'class_name'
   'settings' => array( // any settings for 'class_name'
      ),
),

В приведенном примере:

  • class_name - пользовательский класс, наследуемый от \ExceptionHandlerLog. Может быть не указан. В этом случае будет использоваться \Bitrix\Main\Diag\FileExceptionHandlerLog.
  • extension - расширение PHP, использовать можно только вместе с class_name.
  • required_file - включаемый файл. Используется только вместе с class_name.
  • settings - настройки для класса, указанного в class_name
assertion_throws_exception Включение поддержки команды assert.
assertion_error_type В ключе задаются типы ошибок, для которых не верный assert выбрасывает исключение.

В handled_errors_types, exception_errors_types, assertion_error_type необходимо передать тип ошибки. Тип ошибки представляет из себя числовой код. Но коды знать и помнить не нужно. Например, параметр exception_errors_types. Что означает данная запись: E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_USER_WARNING & ~E_USER_NOTICE & ~E_COMPILE_WARNING?

Для начала обратимся к уровням ошибок интерпретатора PHP. Есть определенные значения и определенные константы, которые им соответствуют. В нашем же случае данная запись означает, что E_ALL (значение константы 2047), побитовое и не E_NOTICE, и не E_WARNING и не E_STRICT и не E_USER_WARNING и не E_USER_NOTICE и не E_COMPILE_WARNING. То есть E_ALL за исключением далее указанных констант, которые определяют тот или иной уровень ошибок интерпретатора PHP.



Секция connections

Параметры соединения с базой данных и другими источниками данных. Задается имя класса и параметры соединения.

'connections' => array (
     'value' => array (
       'default' => array (
         'className' => '\\Bitrix\\Main\\DB\\MysqlConnection',
         'host' => 'localhost:31006',
         'database' => 'admin_bus',
         'login' => 'admin_bus',
         'password' => 'admin_bus',
         'options' => 2,
         'handlersocket' => array (
           'read' => 'fast'
         ),
       ),
       'fast' => array (
         'className' => '\Bitrix\Name\Data\HsphpReadConnection',
         'host' => 'localhost:31006',
         ),
     ),
     'readonly' => true,
   ),
 );

Внимание: Начиная с версии ядра 14.5.2 и выше возможно использование расширения mysqli.
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
Также для этого в PHP должно быть установлено расширение mysqli, дополнительные проверки на наличие расширения не производятся! Включать mysqli нужно отдельно для старого (dbconn.php) и нового (.settings.php) ядра.

Параметр Значение
options Задаются флаги постоянного соединения и отложенности соединения с базой. Например:
Connection::PERSISTENT == 1
Connection::DEFERRED == 2
Можно записывать их комбинации с помощью битовых операций. Например 3 - это и PERSISTENT, и DEFERRED.
handlersocket В ключе указывается какое соединение использовать. Необходимо создать подключение, где будут указаны класс и хост. В примере кода выше установлен параметр read, у которого указано значение fast. А ниже собственно описание для параметра fast, где указано имя класса и хост с указанием порта.
className имя класса, в которой собственно реализуется работа с конкретным типом БД.
host имя хоста, где находиться база данных. можно указать с портом
database имя базы
login логин пользователя базы данных
password пароль пользователя базы данных

Примечание: В рамках ORM возможна работа с несколькими базами данных.



Корневая секция

В корневой секции размещаются настройки общего характера.

Параметр Значение
disable_iconv Запрещает использование библиотеки iconv. Аналог константы BX_ICONV_DISABLE в старом ядре.


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

  • Пример скрипта для редактирования настроек. (блог)


32
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии