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.value
—true
, если используетсяutf
иfalse
в обратном случае.
Если задана другая кодировка (не UTF-8):
/*Отвечает за кодиорвку*/ 'utf_mode' => array ( 'value' => false, 'readonly' => true, ),
value
—false
, то есть не используется 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
— Включить поддержку assertassertion_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
Открываем файл .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. Выставил параметр 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, то значит они у вас отключены в этом файле.
Включить их просто, для этого надо собственно открыть этот файл по FTP или через функционал Битрикс по следующему пути в админке битрикс
Рабочий стол->Контент->Структура сайта->Файлы и папки->bitrix
Здесь представлен многомерный массив данных, ключ-значение. Это основные настройки вашего сайта на битриксе.
Что бы включить отображение ошибок находим строку ‘debug’ которая находится внутри ‘exception_handling’->’value’ и ставим ей значение true вместо false.
Что бы настроить какие именно ошибки мы хотим отображать в ключе ‘exception_errors_types’ указываем код ошибок, например 29687, но он мало понятен, поэтому лучше использовать в значение данного ключа константы через пробел:
‘handled_errors_types’ => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED,
Здесь мы перечислили все ошибки, предупредения и тд. Если нужно вывести только ошибки, то остальные константы можно просто убрать, поскольку уведомление
Загрузка
Условия обработки персональных данных
Сайт использует технические и персональные данные пользователей для получения маркетинговой и статистической информации. Условия обработки персональных данных посетителей можно ознакомиться по ссылке.
В случае Вашего не согласия с этими условиями — просим Вас покинуть данный сайт. Если Вы продолжаете находиться и использовать сайт — Вы автоматически выражаете свое согласие с условиями обработки персональных данных пользователей сайта