В 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 также намного быстрее, чем вызов одного файла несколько раз.
Да ты прав. Для 5.x вы должны создавать совершенно разные файлы .env в любой отдельной среде, такой как разработка, подготовка, производство и т. Д. Это включено в .gitignore, поэтому системе git это не важно. Каждая манипуляция должна быть сделана вручную еще раз, когда вы меняете обстановку.
Типичный процесс — это ssh на удаленную машину, git, клонировать ваш проект, composer установить все зависимости, а затем создать новый файл .env, в который вы должны поместить все выделенные настройки, относящиеся к этой среде. Ваш гид .env.example.
Если вы хотите скрыть файл в UNIX-системах, вы просто делаете это, добавляя точку в начало имени файла. Я не знаю, как это работает в системах Windows, но файл должен быть скрыт в системах OS X и Unix, чтобы люди не могли случайно скопировать их в другой проект.
Вы можете иметь только один .env-файл для каждой среды, поэтому вам придется войти на сервер и вручную добавить новый .env-файл один раз.
Если вы используете GIT и хотите, чтобы он не был включен, просто добавьте его в свой .gitignore-файл
// filename: .gitignore
.env