Компонент 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
Відмітьте, що використання $()
може не працювати, в залежності від
вашої оболонки.