До версии 18.5.200 действовал такой формат записи:
|
---|
'cache' => array ( 'value' => array ( 'type' => 'files', ), 'readonly' => false, ), |
Дата последнего изменения: 31.05.2019
Особый файл |
Bitrix Framework имеет ряд специфичных настроек ядра, которые не имеют визуального интерфейса редактирования. Этот подход вызван тем, что изменение настроек или ошибка в них легко могут привести к неработоспособности системы (настройки подключения к базе данных, настройки кеширования и т.д.).
Настройки в новом ядре выполняются в файле /bitrix/.settings.php
. Напомним, что в старом ядре аналогичные настройки выполнялись в файле /bitrix/php_interface/dbconn.php
. Файл .settings.php структурно сильно отличается от прежнего dbconn.php.
Даже если вы используете код только старого ядра, то файл .settings.php должен быть создан. Возможна ситуация, когда при установке обновлений какой-то из встроенных механизмов системы будет переписан на новое ядро. Если этот файл корректно не настроен, то это может привести к неработоспособности системы.
Иногда бывают ситуации, что файл .settings.php отсутствует. Его можно создать в автоматическом режиме, если выполнить в
командной строке
Командная PHP-строка - инструмент системы, позволяющий запускать произвольный код на PHP с вызовами функций. Подробнее...
:
Bitrix\Main\Config\Configuration::wnc();
.
Править параметры можно с помощью класса Configuration (Bitrix\Main\Config\Configuration).
Кроме этого настройки могут задаваться в файле .settings_extra.php. Базовый файл настроек содержит неизменные настройки, к которым есть API. Файл .settings_extra.php может содержать произвольный код, который меняет настройки динамически. Соответственно к нему нет API.
Описание параметров |
Ниже описаны параметры, которые возможны для изменения:
Секция cache
Отвечает за настройки кеширования, позволяет задать способ кеширования и его параметры.
В версии 18.5.200 формат записи был изменён одновременно с возможностью использовать в кешировании Redis. Оба формата на данный момент работоспособны, но вендор настойчиво рекомендует использовать новый вариант записи.
Примеры нового формата записи для разных способов кеширования.
|
---|
Redis: 'cache' => array( 'value' => array( 'type' => array( 'class_name' => '\\Bitrix\\Main\\Data\\CacheEngineRedis', 'extension' => 'redis' ), 'redis' => array( 'host' => '127.0.0.1', 'port' => '6379', ) ), 'sid' => $_SERVER["DOCUMENT_ROOT"]."#01" ), Memcache 'cache' => array( 'value' => array( 'type' => array( 'class_name' => '\\Bitrix\\Main\\Data\\CacheEngineMemcache', 'extension' => 'memcache' ), 'memcache' => array( 'host' => '127.0.0.1', 'port' => '11211', ) ), 'sid' => $_SERVER["DOCUMENT_ROOT"]."#01" ), Apc 'cache' => array( 'value' => array( 'type' => array( 'class_name' => '\\Bitrix\\Main\\Data\\CacheEngineApc', 'extension' => 'apc' ), ), 'sid' => $_SERVER["DOCUMENT_ROOT"]."#01" ), Кеш в файлах 'cache' => array( 'value' => array( 'type' => array('class_name' => '\\Bitrix\\Main\\Data\\CacheEngineFiles',), ), 'sid' => $_SERVER["DOCUMENT_ROOT"]."#01" ), XCache 'cache' => array( 'value' => array( 'type' => array( 'class_name' => '\\Bitrix\\Main\\Data\\CacheEngineXCache', 'extension' => 'xcache' ), ), 'sid' => $_SERVER["DOCUMENT_ROOT"]."#01" ), |
|
/bitrix/.settings_extra.php
.
Пример файла /bitrix/.settings_extra.php
|
---|
<?php return array ( 'cache' => array( 'value' => array ( 'type' => 'memcache', 'memcache' => array( 'host' => 'unix:///tmp/memcached.sock', 'port' => '0' ), 'sid' => $_SERVER["DOCUMENT_ROOT"]."#01" ), ), ); ?> |
В базовом файле .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, ),
|
В 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' => 'handlersocket', ), ), 'handlersocket' => array ( 'className' => '\\Bitrix\\Main\\Data\\HsphpReadConnection', 'host' => 'localhost', 'port' => '9998', ), ), 'readonly' => true, ),
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',Также для этого в PHP должно быть установлено расширение mysqli, дополнительные проверки на наличие расширения не производятся! Включать mysqli нужно отдельно для старого (dbconn.php) и нового (.settings.php) ядра.
|
В рамках ORM возможна работа с несколькими базами данных.
Для использования соединения handlersocket должна быт установлена библиотека HSPHP - PHP HandlerSocket client
Корневая секция
В корневой секции размещаются настройки общего характера.
|
Секция pull
Эта секция реально нужна только для хостинг-партнеров (для автоматизации развертывания), для всех остальных рекомендуется использовать настройку через административный интерфейс.
Пример кода секции и таблица параметров
| |||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'pull' => Array( 'value' => array( 'path_to_listener' => "http://#DOMAIN#/bitrix/sub/";, 'path_to_listener_secure' => "https://#DOMAIN#/bitrix/sub/";, 'path_to_modern_listener' => "http://#DOMAIN#/bitrix/sub/";, 'path_to_modern_listener_secure' => "https://#DOMAIN#/bitrix/sub/";, 'path_to_mobile_listener' => "http://#DOMAIN#:8893/bitrix/sub/";, 'path_to_mobile_listener_secure' => "https://#DOMAIN#:8894/bitrix/sub/";, 'path_to_websocket' => "ws://#DOMAIN#/bitrix/subws/", 'path_to_websocket_secure' => "wss://#DOMAIN#/bitrix/subws/", 'path_to_publish' => 'http://127.0.0.1:8895/bitrix/pub/', 'nginx_version' => '3', 'nginx_command_per_hit' => '100', 'nginx' => 'Y', 'nginx_headers' => 'N', 'push' => 'Y', 'websocket' => 'Y', 'signature_key' => '1111111111', 'signature_algo' => 'sha1', 'guest' => 'N', ), ),
|
Секция http_client_options
Секция задаёт опции по умолчанию для класса Bitrix\Main\Web\HttpClient.
|
Пример настройки:
'http_client_options' => array ( 'value' => array ( 'redirect' => true,//делаем редиректы, если требуется 'redirectMax' => 10,//но не более 10 'version' => '1.1'//работаем по протоколу http 1.1 ), 'readonly' => false, ),
Правильно ли вы указали настройки, можно проверить так:
use Bitrix\Main\Config\Configuration; print_r(Configuration::getValue("http_client_options"));
Должен быть выведен ваш массив.
Список ссылок по теме:
- Пример скрипта для редактирования настроек. (блог)
Развернуть комментарии