Версия фреймворка:
5.4 4.2
Прогресс перевода
Перевод немного отстаёт от оригинала. Коммитов не переведено: 1

Настройка

Вступление

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

Иногда вам нужно прочитать настройку во время работы приложения. Это можно сделать, используя класс Config:

Чтение значения настройки

Config::get('app.timezone');

Вы можете указать значение по умолчанию, которое будет возвращено, если настройка не существует:

$timezone = Config::get('app.timezone', 'UTC');

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

Изменение значения во время выполнения

Config::set('database.default', 'sqlite');

Значения, установленные таким образом, сохраняются только для текущего запроса и не влияют на более поздние запросы.

Настройки среды выполнения (the environment)

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

Просто создайте внутри config папку с именем вашей среды, таким как local. Затем создайте файлы настроек и укажите в них значения для этой среды, которыми вы перекроете изначальные настройки. Например, вы можете перекрыть драйвер кэша для локальной системы, создав файл cache.php внутри app/config/local с таким содержимым:

<?php

return array(

	'driver' => 'file',

);
Примечание: Не используйте имя 'testing' для названия среды - оно зарезервировано для юнит-тестов.

Заметьте, что вам не нужно указывать каждую настройку, которая есть в конфигурационном файле по умолчанию (app/config/cache.php). Настройки среды будут наложены на эти базовые файлы.

Теперь нам нужно сообщить Laravel, в какой среде он работает. По умолчанию это всегда production. Вы можете настроить другие среды в файле bootstrap/start.php который находится в корне установки Laravel. В этом файле есть вызов $app->detectEnvironment - массив, который ему передаётся, используется для определения текущей среды. Вы можете добавить в него другие среды и имена компьютеров по необходимости.

<?php

$env = $app->detectEnvironment(array(

    'local' => array('your-machine-name'),

));

В этом примере 'local' это название среды, а 'your-machine-name' - это имя вашего компьютера. Чтобы узнать его, в Mac OS или Linux вы можете использовать команду hostname в терминале, а в Windows - зайти в Панель управления - Система.

Если вам нужна бОльшая гибкость в определении среды, Вы можете передать в метод функцию-замыкание (Сlosure) и задавать среду так, как нужно именно вам. Например, если вы хотите задавать среду в файле .htaccess , то функция-замыкание будет выглядеть следующим образом:

$env = $app->detectEnvironment(function()
{
	return getenv('MY_LARAVEL_ENV');
});

При этом в public/.htaccess вы добавляете строку с именем среды:

SetEnv MY_LARAVEL_ENV local

Или, если у вас в качестве веб-сервера nginx, добавляем в правило обработки php-файлов:

fastcgi_param MY_LARAVEL_ENV "local";	

Получение имени текущей среды выполнения

Вы можете получить имя текущей среды с помощью метода environment:

$environment = App::environment();

Для определения среды вы можете передать аргументы в этот метод:

if (App::environment('local'))
{
	// Среда - local
}

if (App::environment('local', 'staging'))
{
	// Среда - local ИЛИ staging
}

Дополнительные сервис-провайдеры

Иногда требуется для определенной среды выполнения подгрузить дополнительные сервис-провайдеры. Для этого в конфиг-файле app определенной среды выполнения, например, config/local/app.php, используйте хелпер append_config:

'providers' => append_config(array(
    'LocalOnlyServiceProvider',
)) 

Конфиденциальные конфиги

Часто вам может понадобиться хранить часть конфигурационной информации вне обычных конфигов Laravel. Это могут быть ключи доступа к сторонним API-сервисам, ключи шифрования, логины/пароли для доступа к базам данных - или еще какие-то вещи, которые нужны вам только на конкретно этой машине и вы не хотите, чтобы они светились в репозитории. Laravel предоставляет простое средство для размещения таких конфиденциальных конфигов - хранить их в dot-файлах (имена этих файлов начинаются с точки).

Для этого, во-первых, задайте для данного сервера нужную среду выполнения. Например, это ваша девелоперская машина и среда называется local. Затем в корне проекта (там, где лежит composer.json) создайте файл .env.local.php. Этот файл должен возвращать массив значений, так и стандартный конфиг Laravel:

<?php

return array(

	'TEST_STRIPE_KEY' => 'super-secret-sauce',

);

Эти значения будут доступны в вашем приложении (например, в конфигах) в суперглобальных переменных $_ENV и $_SERVER:

'key' => $_ENV['TEST_STRIPE_KEY']

Для продакшн-сервера файл может называться .env.php , а может содержать объявленное в bootstrap/start.php название среды выполнения в своем имени - .env.production.php

Теперь вы можете поместить .env.local.php в .gitignore и держать там, например, ваши личные и особенные логины и пароли и название базы данных, не боясь, что после того, как вы сделаете git push, вашим коллегам придется править конфиги, чтобы приложение заработало у них.

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

Когда ваше приложение находится в режиме обслуживания (maintenance mode), специальный шаблон будет отображаться вместо всех ваших маршрутов. Это позволяет "отключать" приложение в момент обновления кода или обслуживания базы данных. Вызов App::down, который задает поведение приложения в этом режиме, уже содержится в файле app/start/global.php. Возвращённое им значение будет отправлено пользователю, когда приложение находится в режиме обслуживания.

Для включения этого режима просто выполните команду down Artisan:

php artisan down

Чтобы выйти из режима обслуживания выполните команду up:

php artisan up

Для отображения собственного шаблона в режиме обслуживания вы можете добавить в app/start/global.php подобный код:

App::down(function()
{
	return Response::view('maintenance', array(), 503);
});

Если функция-замыкание вернет NULL, то режим обслуживания не будет включен и приложение будет работать в обычном режиме.

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

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