Компонент Dotenv

Дата оновлення перекладу 2023-05-19

Компонент 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 може бути використано у будь-якому середовищі вашого додатку: розробки, тестування, інсценування та навіть виробництва. Але, у виробництві рекомендується налаштовувати спавжні змінні середовища задля уникнення сповільнення через обробку файлу .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 # Додати користувача як префікс пароля

Вбудуйте команди через $() (не підтримуєтья у Windows):

1
START_TIME=$(date)

Note

Відмітьте, що використання $() може не працювати, в залежності від вашої оболонки.