Инструкция для установки
Инструкция для установки
Общее

Сайт работает на системе управления контентом «1С-Битрикс: Управление сайтом».

Административный раздел сайта доступен по адресу https://адрес-сайта/bitrix/

Документация по работе с системой администрирования «1С-Битрикс: Управление сайтом»

Для работы с контентом сайта необходимо ознакомиться с системой управления сайтом. Вся необходимая и подробная информация содержится в курсе Контент-менеджер «1С-Битрикс».

Установка

Модуль "dZENcode: phpdotenv" может быть установлено на CMS "1С-Битрикс, управление сайтом" с активной лицензией следующих редакций: Стандарт, Малый бизнес, Эксперт, Бизнес.

Если 1С-Битрикс подходящей редакции уже установлен:
  • Данный продукт рассчитан на версию PHP 8.1 и выше.

    перед установкой убедитесь что ваша версия PHP соответствует требованиям.

    Можно проверить через административную часть сайта по пути: Настройки - Производительность - PHP - Версия PHP

    В административной части сайта выбрать раздел «Marketplace»

    «Каталог решений», найти и установить модуль «dZENcode:phpdotenv»

Установка с Marketplace
Маркетпласе
Услуга установки модуля

В случае необходимости установки модуля силами специалистов компании "dZENcode", мы предлагаем услугу установки и первичной настройки модуля на хостинге.

Запрос на установку модуля Вы можете отправить через виджет, через форму обратной связи на нашем сайте или отправив письмо нам на почту support@dzencode.com .

Применение

Файл .env обычно не контролируется версиями, поскольку он может содержать конфиденциальные ключи API и пароли.

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

Затем участники проекта самостоятельно копируют .env.example файл на локальный компьютер .env и проверяют правильность всех настроек для своей локальной среды, заполняя секретные ключи или предоставляя при необходимости свои собственные значения.

В этом случае .env файл следует добавить в файл проекта .gitignore, чтобы его никогда не фиксировали соавторы.

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

Использование

Примеры в этой и иных инструкциях не являются безопастными, в них упрощен код для наглядности и простоты понимания.

Добавьте конфигурацию вашего приложения в .env файл в корне вашего проекта. Убедитесь, что .env файл добавлен к вам .gitignore, чтобы он не был возвращен в код.

S3_BUCKET= " dotenv " SECRET_KEY= " super_seekret_key "

Теперь создайте файл с именем .env.example и добавьте его в проект. Здесь должны быть установлены переменные ENV, но значения должны быть либо пустыми, либо заполнены фиктивными данными. Идея состоит в том, чтобы сообщить людям, какие переменные требуются, но не сообщать им чувствительные производственные значения.

S3_BUCKET= " devbucket " SECRET_KEY = " abc123 "

Затем вы можете загрузить .env свое приложение с помощью:

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();

Чтобы подавить исключение, которое выдается при отсутствии .env файла, вы можете

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->safeLoad();

При желании вы можете передать имя файла в качестве второго параметра, если хотите использовать что-то кроме .env:

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__, 'myconfig'); $dotenv->load();

Все определенные переменные теперь доступны в суперглобальных переменных $_ENV и .$_SERVER

$s3_bucket = $_ENV['S3_BUCKET']; $s3_bucket = $_SERVER['S3_BUCKET'];
Использование Putenv и Getenv

Использование getenv() и putenv() настоятельно не рекомендуется из-за того, что эти функции не являются потокобезопасными, однако все же можно указать PHP dotenv использовать эти функции. Вместо вызова Dotenv::createImmutable можно вызвать Dotenv::createUnsafeImmutable, что добавит PutenvAdapter закулисье. Переменные вашей среды теперь будут доступны с помощью этого getenv метода, а также суперглобальные переменные:

$s3_bucket = getenv('S3_BUCKET'); $s3_bucket = $_ENV['S3_BUCKET']; $s3_bucket = $_SERVER['S3_BUCKET'];
Вложенные переменные

Можно вложить одну переменную среды в другую, что полезно для сокращения повторения.

Это делается путем переноса существующей переменной среды, ${…} например, в

$s3_bucket = getenv('S3_BUCKET'); $s3_bucket = $_ENV['S3_BUCKET']; $s3_bucket = $_SERVER['S3_BUCKET'];
Неизменяемость и настройка репозитория

Неизменяемость означает, что Dotenv разрешено перезаписывать существующие переменные среды. Если вы хотите, чтобы Dotenv перезаписывал существующие переменные среды, используйте createMutable вместо createImmutable:

$dotenv = Dotenv\Dotenv::createMutable(__DIR__); $dotenv->load();

За кулисами это дает указание «репозиторию» разрешить неизменность или нет. По умолчанию репозиторий настроен так, чтобы разрешить перезапись существующих значений по умолчанию, что актуально, если кто-то вызывает метод «создать» с помощью RepositoryBuilder для создания более настраиваемого репозитория:

$repository = Dotenv\Repository\RepositoryBuilder::createWithNoAdapters() ->addAdapter(Dotenv\Repository\Adapter\EnvConstAdapter::class) ->addWriter(Dotenv\Repository\Adapter\PutenvAdapter::class) ->immutable() ->make(); $dotenv = Dotenv\Dotenv::create($repository, __DIR__); $dotenv->load();

В приведенном выше примере загруженные значения будут записываться в $_ENV и putenv, но при интерполяции переменных среды мы будем читать только из $_ENV. Более того, он никогда не заменит какие-либо переменные, уже установленные перед загрузкой файла.

С помощью другого примера можно также указать набор переменных, которые будут разрешены в списке. То есть будут загружены только переменные из списка разрешений:

$repository = Dotenv\Repository\RepositoryBuilder::createWithDefaultAdapters() ->allowList(['FOO', 'BAR']) ->make(); $dotenv = Dotenv\Dotenv::create($repository, __DIR__); $dotenv->load();
Требование установки переменных

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

Вы можете использовать одну строку:

$dotenv->required('DATABASE_DSN');

Или массив строк:

$dotenv->required(['DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS']);

Если какие-либо переменные ENV отсутствуют, Dotenv выдаст RuntimeException следующее:

One or more environment variables failed assertions: DATABASE_DSN is missing
Пустые переменные

Помимо простого требования установки переменной, вам также может потребоваться убедиться, что переменная не пуста:

$dotenv->required('DATABASE_DSN')->notEmpty();

Если переменная среды пуста, вы получите исключение:

One or more environment variables failed assertions: DATABASE_DSN is empty
Целочисленные переменные

Вам также может потребоваться убедиться, что переменная имеет целочисленное значение. Вы можете сделать следующее:

$dotenv->required('FOO')->isInteger();

Если переменная среды не является целым числом, вы получите исключение:

One or more environment variables failed assertions: FOO is not an integer.

Возможно, потребуется применять правила проверки только тогда, когда переменная установлена. Здесь это тоже поддерживается:

$dotenv->ifPresent('FOO')->isInteger();
Логические переменные

Возможно, вам потребуется убедиться, что переменная имеет логическую форму, принимающую значения "true", "false", "On", "1", "Yes", "Off", "0", "No". Вы можете сделать следующее

$dotenv->required('FOO')->isBoolean();

Если переменная среды не является логической, вы получите исключение:

One or more environment variables failed assertions: FOO is not a boolean.

Аналогично можно написать:

$dotenv->ifPresent('FOO')->isBoolean();
Разрешенные значения

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

$dotenv->required('SESSION_STORE') ->allowedValues(['Filesystem', 'Memcached']);

Если бы переменная среды не была в этом списке разрешенных значений, вы получили бы аналогичное исключение:

One or more environment variables failed assertions: SESSION_STORE is not an allowed value.

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

$dotenv->required('FOO')->allowedRegexValues('([[:lower:]]{3})');
Комментарии

Вы можете прокомментировать свой .env файл, используя этот #символ. Например

# this is a comment VAR="value" # comment VAR=value # comment
Разбор без загрузки

Иногда вам просто нужно проанализировать файл и разрешить вложенные переменные среды, предоставив нам строку, и получить обратно массив. Хотя это уже возможно, но это немного неудобно, поэтому мы предоставили прямой способ сделать это:

// ['FOO' => 'Bar', 'BAZ' => 'Hello Bar'] Dotenv\Dotenv::parse("FOO=Bar\nBAZ=\"Hello \${FOO}\"");

Это точно так же, как:

Dotenv\Dotenv::createArrayBacked(__DIR__)->load();

только вместо указания каталога для поиска файла вы напрямую указываете содержимое файла.

Примечания по использованию

Когда новый разработчик клонирует вашу кодовую базу, у него будет дополнительный одноразовый шаг, чтобы вручную скопировать файл .env.example и .env заполнить свои собственные значения (или получить любые конфиденциальные значения от коллеги по проекту).

Поиск неисправностей

В некоторых настройках сервера (чаще всего на общем хостинге) PHP может деактивировать суперглобальные переменные, такие как $_ENV или $_SERVER. Если эти переменные не установлены, просмотрите их variables_order в php.ini файле. См. php.net/en/ini.core.php#ini.variables-order .