Laravel: Требуется ли для нескольких сред несколько файлов .env?

В Laravel 4.x было возможно иметь среду разработки и производства с одним файлом конфигурации. Каркас будет автоматически определять, что следует использовать в соответствии с хостом.

С Laravel 5.x кажется, что я должен использовать следующий подход:

  • На моем локальном компьютере .env файл в корневом каталоге с «APP_ENV = local» и другие файлы конфигурации для локального запуска.

  • На моем сервере то же самое с «APP_ENV = production» и соответствующими настройками.

Поэтому, если я разверну свой сайт, я должен следить за тем, чтобы я не перезаписывал файл .env на сервере своей локальной версией.

Пока это правильно или я что-то здесь упускаю?

Основная цель — сохранить конфиденциальные данные вне контроля версий и хранить все в одном месте.

Следующие пункты и вопросы об этом подходе неясны:

  • Создатель пакета .env рекомендует НЕ использовать его в производственном режиме (источник: https://github.com/vlucas/phpdotenv). Решение в Laravel для этой проблемы будет заключаться в том, чтобы жестко кодировать каждый параметр в рамках фреймворка и следить за тем, чтобы файл .env не развертывался на сервере (это может быть огромной дырой в безопасности).

  • Если будет использовано решение, описанное выше, как вы защитите конфиденциальные данные от контроля версий?

  • Допустим, используются два разных файла .env (для разработки и один для сервера в производственном режиме), не будет ли это проблемой производительности в производственном процессе, так как каждый параметр вызывается снова и снова из файла .env?

Это похоже на шаг назад по сравнению с подходом 4.x, где я мог бы все настроить и сделать в одном месте, не нужно иметь два разных файла с одинаковым именем и смотреть, что я их не перепутал или что-то в этом роде. И загрузка одного массива в .php также намного быстрее, чем вызов одного файла несколько раз.

0

Решение

Да ты прав. Для 5.x вы должны создавать совершенно разные файлы .env в любой отдельной среде, такой как разработка, подготовка, производство и т. Д. Это включено в .gitignore, поэтому системе git это не важно. Каждая манипуляция должна быть сделана вручную еще раз, когда вы меняете обстановку.

Типичный процесс — это ssh на удаленную машину, git, клонировать ваш проект, composer установить все зависимости, а затем создать новый файл .env, в который вы должны поместить все выделенные настройки, относящиеся к этой среде. Ваш гид .env.example.

1

Другие решения

Если вы хотите скрыть файл в UNIX-системах, вы просто делаете это, добавляя точку в начало имени файла. Я не знаю, как это работает в системах Windows, но файл должен быть скрыт в системах OS X и Unix, чтобы люди не могли случайно скопировать их в другой проект.

Вы можете иметь только один .env-файл для каждой среды, поэтому вам придется войти на сервер и вручную добавить новый .env-файл один раз.

Если вы используете GIT и хотите, чтобы он не был включен, просто добавьте его в свой .gitignore-файл

// filename: .gitignore
.env
0

По вопросам рекламы [email protected]