Переменные окружения и файлы .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 defaultconfig() и 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 — локальная установка не требуется.
Все уроки этого курса
- Настройка Nginx и PHP-FPM
- Переменные окружения и файлы .env
- Развёртывание с GitHub Actions
- Контейнеризация приложения PHP