Компонент Dotenv

Компонент Dotenv анализирует файлы .env, чтобы сделать переменные окружения, хранящиеся в них, доступными через getenv(), $_ENV или $_SERVER.

Установка

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

Then, require the vendor/autoload.php file to enable the autoloading mechanism provided by Composer. Otherwise, your application won't be able to find the classes of this Symfony component.

Применение

Чувствительная информация и настройки, зависящие от окружения, должны быть определены как переменные окружения (как рекомендовано для двенадцатифакторных приложений). Использование файла .env для хранения этих переменных окружения облегчает разработку и управление CI, храня их в одном "стандартном" месте и независимо от стека технологии, который вы используете (например, Nginx против встроенного PHP сервера).

Note

PHP имеет множество разных реализаций этой "схемы". Цель этой реализации заключается в дублировании того, что бы делал source .env. Он пытается быть максимально похожим на стандартное базовое поведение (а это значит, к примеру, отсутствие валидации значений).

Загрузите файл .env в вашем PHP-приложении через Dotenv::load():

1
2
3
4
5
6
7
use Symfony\Component\Dotenv\Dotenv;

$dotenv = new Dotenv();
$dotenv->load(__DIR__.'/.env');

// Вы можете также загрузить несколько файлов
$dotenv->load(__DIR__.'/.env', __DIR__.'/.env.dev');

Учитывая следующее содержимое файла .env:

1
2
3
# .env
DB_USER=root
DB_PASS=pass

Получите доступ к значению с помощью getenv() в вашем коде:

1
2
$dbUser = getenv('DB_USER');
// вы также можете использовать ``$_ENV`` или ``$_SERVER``

Note

Symfony Dotenv никогда не перезаписывает существующие переменные окружения.

Никогда не стоит хранить файл .env в хранилище вашего кода, так как он может содержать чувствительную информацию; вместо этого, создайте файл .env.dist с разумными настройками по умолчанию.

Symfony Dotenv должен быть использован только в окружениях разработки, тестирования и продвижения. Для окружений производства, используйте "настоящие" переменные окружения.

Так как файл .env является обычным сценарием оболочки, вы можете source его в ваши собственные сценарии оболочки:

1
source .env

Добавьте комментарии с префиксом #:

1
2
3
# Сертификаты БД
DB_USER=root
DB_PASS=pass # Это секретный пароль

Используйте переменные окружения в значениях, добавив к ним префикс $:

1
2
DB_USER=root
DB_PASS=${DB_USER}pass # Include the user as a password prefix

Встройте команды через $() (не поддерживается в Windows):

1
START_TIME=$(date)

Note

Note that using $() might not work depending on your shell.

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.