Все файлы настроек Laravel хранятся в папке app/config. Каждая настройка задокументирована, поэтому не стесняйтесь изучить эти файлы и познакомиться с возможностями конфигурирования.
Иногда вам нужно прочитать настройку во время работы приложения. Это можно сделать, используя класс Config:
Config::get('app.timezone');
Вы можете указать значение по умолчанию, которое будет возвращено, если настройка не существует:
$timezone = Config::get('app.timezone', 'UTC');
Заметьте, что синтаксис с точкой может использоваться для доступа к разным файлам настроек.
Config::set('database.default', 'sqlite');
Значения, установленные таким образом, сохраняются только для текущего запроса и не влияют на более поздние запросы.
Часто необходимо иметь разные значения для разных настроек в зависимости от среды, в которой выполняется приложение. Например, вы можете захотеть использовать разные драйвера кэша на локальном и производственном серверах. Это легко достигается использованием настроек, зависящих от среды.
Просто создайте внутри 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'),
));
In this example, 'local' is the name of the environment and 'your-machine-name' is the hostname of your server. On Linux and Mac, you may determine your hostname using the hostname terminal command.
В этом примере '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
Получение имени текущей среды:
Вы можете получить имя текущей среды с помощью метода environment:
$environment = App::environment();
Для определения среды вы можете передать аргументы в этот метод:
if (App::environment('local'))
{
// Среда - local
}
if (App::environment('local', 'staging'))
{
// Среда - local ИЛИ staging
}
Когда ваше приложение находится в режиме обслуживания (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, то режим обслуживания не будет включен и приложение будет работать в обычном режиме.
Пока ваше приложение находится в режиме обслуживания, очереди не будут обрабатываться. Работа очередей будет возобновлена, когда приложение выйдет из режима обслуживания.