Сделал, как описано в
yum install unzip cd /tmp wget https://getcomposer.org/download/1.10.13/composer.phar chmod +x composer.phar mv composer.phar /usr/local/bin/composer |
Первым делом поставил
composer require symfony/dotenv |
который позволяет использовать для хранения настроек .env файлы. Как написано в документации - компонент Dotenv анализирует файлы .env, чтобы сделать переменные окружения, хранящиеся в них, доступными через getenv(), $_ENV или $_SERVER. Такой способ, на мой взгляд, гораздо удобнее привычных .settings.php и dbconn.php, позволяет хранить все пароли и настройки в одном месте. За счет этого битриксовые файлы настроек можно будет добавить в систему контроля версий как на продакшене так и на всех дев-серверах.
Далее возник вопрос подключения автозагрузки и Dotenv для использования их в конфигурации 1С-Битрикс. На большинстве страниц первым подключается файл dbconn.php а затем .settings.php. Но в обработчике bitrix/urlrewrite.php почему то обратный порядок подключения конфигов. Поэтому код подключения добавил в оба файла настроек. Теперь dbconn.php начинается так
<?if(!is_array($_ENV) || !count($_ENV)) { require_once __DIR__ . '/. ./. ./. ./vendor/autoload.php'; $env = new \Symfony\Component\Dotenv\Dotenv(); $env->load(__DIR__ . '/. ./. ./. ./.env'); } define("BX_USE_MYSQLI", true); define("DBPersistent", false); $DBType = "mysql"; $DBHost = $_ENV['APP_DB_HOST']; $DBLogin = $_ENV['APP_DB_LOGIN']; $DBPassword = $_ENV['APP_DB_PASS']; $DBName = $_ENV['APP_DB_NAME']; $DBDebug = (bool) $_ENV['APP_DEBUG']; $DBDebugToFile = false; define("MYSQL_TABLE_TYPE", "INNODB"); |
Файл .settings.php
<?php if(!is_array($_ENV) || !count($_ENV)) { require_once __DIR__ . '/. ./. ./vendor/autoload.php'; $env = new \Symfony\Component\Dotenv\Dotenv(); $env->load(__DIR__ . '/. ./. ./.env'); } return array ( -------------------------------------------------------------------------------- 'exception_handling' => array ( 'value' => array ( 'debug' => ((bool) $_ENV['APP_DEBUG']), -------------------------------------------------------------------------------- 'connections' => array ( 'value' => array ( 'default' => array ( 'className' => '\\Bitrix\\Main\\DB\\MysqliConnection', 'host' => $_ENV['APP_DB_HOST'], 'database' => $_ENV['APP_DB_NAME'], 'login' => $_ENV['APP_DB_LOGIN'], 'password' => $_ENV['APP_DB_PASS'], 'options' => 2, ), ), 'readonly' => true, ), -------------------------------------------------------------------------------- 'composer' => array ( 'value' => array ( 'config_path' => $_ENV['APP_COMPOSER'], ), ), |
И пример файла настроек .env
APP_ENV="dev" APP_DEBUG=1 APP_DEBUG_LEVEL=DEBUG APP_LOG_FOLDER="/log/" APP_COMPOSER="/home/bitrix/composer.json" APP_URL="http://dev.mydomain.com" APP_PRODUCTION_URL="https://mydomain.com" APP_DB_HOST=localhost APP_DB_PORT=3306APP_DB_NAME=bitrix APP_DB_LOGIN=bitrix APP_DB_PASS=********* |