Сканер безопасности показывает ошибку и рекомендует отключить расширенный вывод ошибок в файле 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' =>
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
Bitrix Framework имеет ряд специфичных настроек ядра, которые не имеют визуального интерфейса редактирования. Этот подход вызван тем, что изменение настроек или ошибка в них легко могут привести к неработоспособности системы (настройки подключения к базе данных, настройки кеширования и т.д.).
Настройки в новом ядре выполняются в файле /bitrix/.settings.php
. В старом ядре аналогичные настройки выполнялись в файле /bitrix/php_interface/dbconn.php
. Файл .settings.php
структурно сильно отличается от прежнего dbconn.php
.
В Битрикс параллельно используются 2 ядра — старое и новое, соответственно, оба файла настроек используются одновременно. Поэтому необходимо производить настройки обоих файлов.
Даже если используется код только старого ядра, то файл .settings.php
должен быть создан. Возможна ситуация, когда при установке обновлений какой-то из встроенных механизмов системы будет переписан на новое ядро. Если этот файл корректно не настроен, то это может привести к неработоспособности системы.
Иногда бывают ситуации, что файл .settings.php
отсутствует. Его можно создать в автоматическом режиме, если выполнить в командной строке:
BitrixMainConfigConfiguration::wnc();
Если на экране появилась ошибка
При выполнении скрипта возникла ошибка. Включить расширенный вывод ошибок можно в файле настроек .settings.php
то открываем файл .settings.php
'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, ),
находим debug
и заменяем false
на true
. В результате чего на экране будет подробное описание ошибки:
[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 • CMS • PHP • Web-разработка • Битрикс • Ошибка • .settings.php • dbconn.php • debug • Настройка • Ядро
Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Если у вас на сайте произошла ошибка, но она не отображается и выводиться надпись о том, что ошибки нужно включить в файле .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,
Здесь мы перечислили все ошибки, предупредения и тд. Если нужно вывести только ошибки, то остальные константы можно просто убрать, поскольку уведомление
Загрузка