Компонент Dotenv
Дата обновления перевода: 2023-07-31
Компонент Dotenv
Компонент Dotenv анализирует файлы
.env
, чтобы сделать переменные окружения, хранящиеся в них, доступными черезgetenv()
,$_ENV
или$_SERVER
.
Установка
1
$ composer require symfony/dotenv
Также вы можете клонировать репозиторий https://github.com/symfony/dotenv.
Note
Если вы устанавливаете этот компонент вне приложения Symfony, вам нужно
подключить файл vendor/autoload.php
в вашем коде для включения механизма
автозагрузки классов, предоставляемых Composer. Детальнее читайте в
этой статье.
Применение
Чувствительная информация и настройки, зависящие от окружения, должны быть
определены как переменные окружения (как рекомендовано для двенадцатифакторных приложений).
Использование файла .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
с разумными настройками по умолчанию.
Note
Symfony Dotenv может быть использован в любом окружении вашего приложения:
разработки, тестирования, staging и даже production. Но, в production
рекомендуется настраивать настоящие переменные окружения для избежания
замедления из-за обработки файла .env
при каждом запросе.
Так как файл .env
является обычным сценарием оболочки, вы можете
source
его в ваши собственные сценарии оболочки:
1
source .env
Добавьте комментарии с префиксом #
:
1 2 3
# Сертификаты DB
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.