0Pricing
PHP Academy · Урок

Переменные окружения и файлы .env

Управляйте конфиденциальными настройками с помощью файлов .env и библиотек dotenv в PHP

«Переменные окружения и файлы .env» — бесплатный урок PHP Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.

Зачем нужны переменные окружения?

Жёстко заданные в исходном коде учётные данные или конфигурация, зависящая от окружения, небезопасны и делают развертывание хрупким. Переменные окружения отделяют конфигурацию от кода.

Файл .env

Файл .env содержит пары «ключ — значение», которые загружаются в окружение при запуске. Добавьте его в .gitignore — NEVER добавляйте его в систему контроля версий.

# .env
APP_ENV=production
APP_KEY=base64:...
DB_HOST=127.0.0.1
DB_NAME=myapp
DB_USER=myapp_user
DB_PASS=supersecret

REDIS_HOST=127.0.0.1
MAIL_HOST=smtp.mailtrap.io

Интеграция Laravel с .env

Laravel использует vlucas/phpdotenv для автоматической загрузки .env. Получайте значения с помощью вспомогательной функции env().

<?php
$host = env("DB_HOST", "127.0.0.1"); // "127.0.0.1" is the default

config() и env()

Используйте env() только в файлах config/*.php. Во всех остальных местах используйте config("database.host") — это корректно работает при кэшировании конфигурации.

<?php
// In config/database.php:
"host" => env("DB_HOST", "127.0.0.1")

// In your service classes:
$host = config("database.connections.mysql.host");

Кэширование конфигурации

Кэшируйте конфигурацию в production, чтобы не разбирать .env при каждом запросе.

$ php artisan config:cache
# After changing .env:
$ php artisan config:clear

Чистый PHP с phpdotenv

Используйте vlucas/phpdotenv за пределами Laravel.

$ composer require vlucas/phpdotenv

<?php
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
$host = $_ENV["DB_HOST"];

Обязательные переменные

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

<?php
$dotenv->required(["DB_HOST", "DB_NAME", "DB_USER", "DB_PASS"]);
$dotenv->required(["DB_PORT"])->isInteger();

Файл .env.example

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

Переменные окружения на уровне сервера

В production задавайте переменные окружения на уровне сервера (в файлах служб systemd, с помощью флагов Docker --env или секретов Kubernetes), а не в файле .env.

# systemd service:
[Service]
Environment="APP_ENV=production"
Environment="DB_HOST=db.internal"

Управление секретами

Для конфиденциальных учётных данных (ключей API и сертификатов) рассмотрите возможность использовать менеджер секретов: HashiCorp Vault, AWS Secrets Manager или секреты GitHub Actions для непрерывной интеграции.

Итоги

Храните всю конфигурацию, зависящую от окружения, в .env. Никогда не добавляйте этот файл в систему контроля версий. Используйте config() в коде приложения, а env() — только в файлах конфигурации. Кэшируйте конфигурацию в production с помощью php artisan config:cache.

Быстрая проверка

Где следует вызывать env() в приложении Laravel?

Часто задаваемые вопросы

Урок «Переменные окружения и файлы .env» бесплатный?

Да — полный текст урока «Переменные окружения и файлы .env» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Переменные окружения и файлы .env»?

Управляйте конфиденциальными настройками с помощью файлов .env и библиотек dotenv в PHP Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PHP Academy?

Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Переменные окружения и файлы .env»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PHP Academy?

Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Настройка Nginx и PHP-FPM
  2. Переменные окружения и файлы .env
  3. Развёртывание с GitHub Actions
  4. Контейнеризация приложения PHP
← Назад к PHP Academy