Любите загадки? Событие еще доступно на сайте.

Настройка

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

Вступление

Все файлы настроек 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('LARAVEL_ENV');
});

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

SetEnv LARAVEL_ENV local

Или, если у вас nginx, добавляете в нужный location

fastcgi_param 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, то режим обслуживания не будет включен и приложение будет работать в обычном режиме.

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

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