Вступление

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

 

Конфигурация среды

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

Чтобы сделать это проще, Laravel использует PHP-библиотеку DotEnv от Vance Lucas. В новой установке Laravel корневой каталог вашего приложения будет содержать файл. Если вы устанавливаете Laravel через Composer, этот файл будет автоматически переименован в . В противном случае вам следует переименовать файл вручную..env.example.env

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

Если вы разрабатываете с командой, вы можете продолжить включать файл в ваше приложение. Поместив значения заполнителей в пример файла конфигурации, другие разработчики в вашей команде могут четко видеть, какие переменные среды необходимы для запуска вашего приложения. Вы также можете создать файл. Этот файл переопределит файл при запуске тестов PHPUnit или выполнении команд Artisan с параметром..env.example.env.testing.env--env=testing

Любая переменная в вашем .envфайле может быть переопределена внешними переменными среды, такими как переменные среды уровня сервера или системы.

Типы переменных среды

Все переменные в ваших .envфайлах анализируются как строки, поэтому были созданы некоторые зарезервированные значения, чтобы вы могли возвращать более широкий диапазон типов из функции:env()

.env Value env() Value
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"

 

Получение конфигурации среды

Все переменные, перечисленные в этом файле, будут загружены в $_ENVсуперглобальный PHP, когда ваше приложение получит запрос. Однако вы можете использовать envпомощника для получения значений из этих переменных в ваших файлах конфигурации. Фактически, если вы просмотрите файлы конфигурации Laravel, вы заметите несколько вариантов, уже использующих этот помощник:

'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, на странице отладки будут показаны все переменные окружения и их содержимое. В некоторых случаях вы можете захотеть скрыть определенные переменные. Вы можете сделать это, обновив debug_blacklistопцию в вашем файле конфигурации.config/app.php

Некоторые переменные доступны как в переменных среды, так и в данных сервера / запроса. Таким образом, вам может понадобиться в черный список их как $_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

 

Если вы выполняете команду во время процесса развертывания, вы должны быть уверены, что вызываете функцию только из ваших файлов конфигурации. Как только конфигурация будет кэширована, файл не будет загружен и все вызовы функции вернутся .config:cacheenv.envenvnull

 

Режим технического обслуживания

Когда ваше приложение находится в режиме обслуживания, для всех запросов в ваше приложение будет отображаться пользовательское представление. Это позволяет легко «отключить» ваше приложение во время его обновления или при выполнении технического обслуживания. Проверка режима обслуживания включена в стек промежуточного программного обеспечения по умолчанию для вашего приложения. Если приложение находится в режиме обслуживания, MaintenanceModeExceptionбудет сгенерировано с кодом состояния 503.

Чтобы включить режим обслуживания, выполните команду downArtisan:

php artisan down

Вы также можете предоставить messageи retryпараметры для downкоманды. Это messageзначение может использоваться для отображения или регистрации пользовательского сообщения, в то время как retryзначение будет установлено как значение заголовка HTTP:Retry-After

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

Режим обслуживания и очереди

Пока ваше приложение находится в режиме обслуживания, никакие задания в очереди не будут обрабатываться. Задания будут по-прежнему обрабатываться как обычно, как только приложение выйдет из режима обслуживания.

Альтернативы режиму обслуживания

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