Конфигурация
Содержание:
Введение
Все файлы конфигурации располагаются в папке config
.
Каждое свойство описано, поэтому достаточно просто просмореть файлы, чтобы определить какие параметры
необходимо изменять в вашем проекте.
Конфигурация среды
Бывает полезно иметь несколько значений конфигурации, основанных на окружении вашего приложения.
Например, хотелось бы использовать различные кэш-драйверы для локальной версии и на веб-сервере.
Чтобы реализовать идею разделения драйвера или другую, необходимо использовать PHP библиотеку
Ванса Лукаса (Vance Lucas) DotEnv.
В корневой директории вашего проекта должен располагаться файл .env.example
. Если вы устанавливали
Ларавел через Composer, то такой файл автоматически был переименован в .env
.
В других случаях, неоходимо переименовать файл вручную.
Файл .env
стоит исключить из наблюдения для сисетмы контроля версия.
Это позволит каждому разработчику или на сервере иметь отдельный файл конфигурации проекта,
который соответствует среде. Кроме того, это затрагивает аспект безопасности, чтобы не позволять другим системам
получить доспут некоторым настройкам вашего проекта и среды.
Если вы работаете в команде, тогда можно включить файл .env.example
в состав вашего приложения.
Это позволит каждому разработчику иметь пример всех переменный и значений, которые необходимы для запуска
приложения. Также можно создать файл .env.testing
. Этот файл перезапишет информация файла
.env
во время PHPUnit теста или выполнения команды Artisan --env=testing
.
Любая переменная из файла .env
может быть перезаписана внешними переменными среды,
такими как server-level или system-level переменными среды.
Типы переменный среды
Все переменные в ваших .env
файлах обрабатываются как строки, поэтому были созданы некоторые значения,
которые позволяют возвращать широкий диапазон типов для функции env()
.
.env Значение |
env() Значение |
true |
(bool) true |
(true) |
(bool) true |
false |
(bool) false |
(false) |
(bool) false |
empty |
(string) '' |
(empty) |
(string) '' |
null |
(null) null |
(null) |
(null) null |
Если вам необходимо определить переменные среды значениеями, которые содержат пробелы,
вы можете сделать это, взяв значение в двойные кавычки.
APP_NAME="My Application"
Получение конфигурации среды
Все переменные, которые перечислены в файле, будут загружены в супер-глобальную PHP переменную $_ENV
,
в момент когда приложение получает запрос. Вы можете использовать помощник env
, чтобы получить значения
из переменных в конфигурационных файлах. По факту, если вы пересмотрите файлы конфигурации Ларавел, вы можете
заметить некоторые опции, которые уже используют этот помощник.
'debug' => env('APP_DEBUG', false),
Второе значение, которое передаётся в функцию env
— это значение по умолчанию.
Это значение будет использовано, если не будет существовать ни одной переменной среды для данного ключа.
Определение текущей среды
Текущая среда приложения определена через переменную APP_ENV
из вашего файла .env
.
Вы можете использовать значение через метод environment
для фасада App
.
$environment = App::environment();
Вы можете передавать аргументы для метода environment
, чтобы проверить,
если совпадения для данного значения. Это метод вернёт true
, если будут любые совпадения.
if (App::environment('local')) {
// The environment is local
}
if (App::environment(['local', 'staging'])) {
// The environment is either local OR staging...
}
Текущее обнаружение среды приложения может быть переопределено на уровне сервера
APP_ENV
переменную среды. Это может быть полезно в ситуации, когда необходимо
использовать одно и то же приложение для различных конфигураций среды. Вы можете установить нужный хост
в соответствии с нужной конфигураций среды.
Скрыть переменный среды от отладчика
Если исключение не перехвачено и значение переменной среды APP_DEBUG
true
,
на странице отладки будут показаны переменные и их значения. В некоторых случаях вы могли бы хотеть скрыть
некоторые переменные. Чтобы скрыть переменную, достаточно добавить её в соотвествующий список.
Для этого в файле config/app.php
найдите опцию debug_blacklist
и добавьте туда
значение переменной.
Некоторые переменные доступны и для переменных среды и для запросов сервера.
В этом случае неоходимо добавить в список обе переменные для $_ENV
и $_SERVER
:
return [
// ...
'debug_blacklist' => [
'_ENV' => [
'APP_KEY',
'DB_PASSWORD',
],
'_SERVER' => [
'APP_KEY',
'DB_PASSWORD',
],
'_POST' => [
'password',
],
],
];
Доступ к значениям конфигурации
Вы можете легко получить значение переменных конфигурации используя глобальный помощник config
из любой точки вашего приложения. Тут используется синтаксис с точками, в который включает имя файла и название
опции, к которой вы можете получить доступ. Можно указывать значение по умолчанию, которое вернёт функция,
если опция не существует.
$value = config('app.timezone');
Чтобы установить значения конфигурации на ходу, передайте соответствующий аргумент в
config
помощника.
config(['app.timezone' => 'America/Chicago']);
Конфигурация кэша
Чтобы ускорить ваше приложение, лучше всего кэшировать все файлы конфигурации в один с использованием
команды Artisan config:cache
. Такая команда перезапишет все опции в один файл конфигурации,
который будет загружаться фреймворков очень быстро.
Вы должны прописать команду php artisan config:cache
на активном (production) веб-сервере, как
часть разработки маршрутизации. Эта команду не стоит прописывать для локальной копии приложения, в силу того,
что параметры часто меняются в процессе разработки.
Если вы используете команду config:cache
во время разработки, неоходимо убедиться в том,
что вы ипользуете функцию env
только из файлов конфигурации.
После того как сформируется кэш, файл .env
не будет загружаться, а все обращения к функции
env
получат ответ null
.
Режим обслуживания
Кодгда ваше приложение находится в режиме обслуживания, пользовательское представление будет показано для всех
запросов.
Это позволяет легко отключить приложение, во время обновления или проведения действий обслуживания.
Проверка режима приложения включена в базовый набор функции промежуточного слоя.
Когда приложение находится в режиме обслуживания, появится исключение MaintenanceModeException
со статус кодом 503
Чтобы включить режим обслуживания, необходимо выполнить Artisan команду down
.
php artisan down
Вы также можете уточнить некоторые опции для команды down
,
такие как message
и retry
.
Значение каманды message
может быть использованно для отображения логов
или пользовательских сообщений. В то время как значение опции retry
будет установлено как
Retry-After
значения HTTP заголовка.
php artisan down --message="Upgrading Database" --retry=60
Можно сделать так, что находясь в режиме обслуживания некоторые IP-адреса могут иметь доступ к приложению.
Для этих целей есть опция allow
:
php artisan down --allow=127.0.0.1 --allow=192.168.0.0/16
Чтобы отключить режим обслуживания, используйте команду up
.
php artisan up
Вы можете изменить внешний вид страницы обслуживания. Для этого неоходимо переопределить шаблон
для файла resources/views/errors/503.blade.php
.
Режим обслуживания и очереди Maintenance
Пока приложение находится в режиме обслуживания, очереди заданий выполняться не будут.
Выполнение заданий продолжится после того, как приложение вернётся в нормальный режим.
Альтернатива режиму обслуживания
У режива обслуживания есть недосток: при переключении режима несколько секунд приложение будет недоступно.
Есть альтернатива, которая включает режим обслужиания мгновенно: Envoyer