{{TOC}} {{DOCVER 4.0=0da300f6445bec5a70d007f503834fce957b065b 16.10.2014 04:19:00, 4.1=efd541a0b218b1c6aafb73f0051c18ed150e3c24 25.05.2014 05:21:00, 4.2=d7b13440c003218ed79e9d508706eca01990122f 4.12.2014 5:01:15}} == Вступление == Все файлы настроек Laravel хранятся в папке %%(t)app/config%%. Каждая настройка задокументирована, поэтому не стесняйтесь изучить эти файлы и познакомиться с возможностями конфигурирования. Иногда вам нужно прочитать настройку во время работы приложения. Это можно сделать, используя класс %%Config%%. **Чтение значения настройки** %%(php) Config::get('app.timezone'); %% Вы можете указать значение по умолчанию, которое будет возвращено, если настройка не существует: %%(php) $timezone = Config::get('app.timezone', 'UTC'); %% **Изменение значения во время выполнения** Заметьте, что синтаксис с точкой может использоваться для доступа к разным файлам настроек. Вы также можете установить значения настроек во время выполнения: %%(php) Config::set('database.default', 'sqlite'); %% Значения, установленные таким образом, сохраняются только для текущего запроса и не влияют на более поздние запросы. == ((#среда)) Настройки среды == Часто необходимо иметь разные значения для разных настроек в зависимости от среды, в которой выполняется приложение. Например, вы можете захотеть использовать разные драйвера кэша на локальном и производственном серверах. Это легко достигается использованием настроек, зависящих от среды. Просто создайте внутри %%(t)config%% папку с именем вашей среды, таким как %%(t)local%%. Затем создайте файлы настроек и укажите в них значения для этой среды, которыми вы перекроете изначальные настройки. Например, вы можете перекрыть драйвер кэша для локальной системы, создав файл %%(t)cache.php%% внутри %%(t)app/config/local%% с таким содержимым: %%(php) 'file', ); %% .(alert) Не используйте имя **testing** для названия среды - оно зарезервировано для ((docs/v4/testing юнит-тестов)). Заметьте, что вам не нужно указывать //каждую// настройку, которая есть в конфигурационном файле по умолчанию (%%(t)app/config/cache.php%%). Настройки среды будут наложены на эти базовые файлы. Теперь нам нужно сообщить Laravel, в какой среде он работает. По умолчанию это всегда **production**. Вы можете настроить другие среды в файле %%(t)bootstrap/start.php%%, который находится в корне установки Laravel. В этом файле есть вызов %%(php) $app->detectEnvironment()%% - массив, который ему передаётся, используется для определения текущей среды. Вы можете добавить в него другие среды и имена компьютеров по необходимости. %%(php) detectEnvironment(array( 'local' => array('your-machine-name'), )); %% В этом примере %%(t)local%% - имя среды, а %%(t)your-machine-name%% - имя хоста вашего сервера. В Linux и Mac вы можете определить имя хоста с помощью терминальной команды %%(t)hostname%%. Если вам необходима более гибкая проверка среды, то вы можете передать в метод %%detectEnvironment%% функцию-замыкание %%closure%%, что позволит вам делать те проверки, которые вы захотите: %%(php) $env = $app->detectEnvironment(function () { return $_SERVER['MY_LARAVEL_ENV']; }); %% **Получение имени текущей среды** Вы можете получить имя текущей среды приложения с помощью метода %%environment%%: %%(php) $environment = App::environment(); %% %%(DOCNEW 4.1=efd541a0b218b1c6aafb73f0051c18ed150e3c24 25.05.2014 05:21:00) Также вы можете передавать аргументы в метод %%environment%%, чтобы проверить - совпадает ли имя среды с заданным значением: ~%% if (App::environment('local')) { // Среда локальная } if (App::environment('local', 'staging')) { // Среда либо локальная, либо отладочная... } ~%% === Настройка поставщика == При использовании настроек среды вам может понадобиться "дополнить" ваш основной файл настроек %%(t)app%% ((/docs/v4/ioc#поставщики поставщиками услуг)) среды. Но если вы попробуете это сделать, то заметите, что поставщики из %%(t)app%% среды переписывают поставщиков в вашем основном файле настроек %%(t)app%%. Чтобы заставить поставщиков добавляться, используйте вспомогательный метод %%append_config%% в вашем файле %%(t)app%% настроек среды: ~%% 'providers' => append_config(array( 'LocalOnlyServiceProvider', )) ~%% == Защита важных настроек == В "реальных" приложениях рекомендуется хранить все ваши важные настройки вне файла настроек. Такие вещи, как пароль к БД, ключи Stripe API и ключи шифрования должны по возможности храниться вне файла настроек. Так где же нам разместить их? К счастью, Laravel обеспечивает очень простое решение защиты элементов конфигурации такого типа, используя "точечные" файлы. Сначала ((/docs/v4/configuration#среда настройте ваше приложение)), чтобы ваша машина была в "локальной" среде. Затем создайте файл %%(t).env.local.php%% в корне вашего приложения, который обычно совпадает с каталогом хранения вашего файла %%(t)composer.json%%. Файл %%(t).env.local.php%% должен возвращать массив пар ключ-значение, так же как обычный файл настроек Laravel: ~%% 'super-secret-sauce', ); ~%% Все возвращаемые этим файлом пары ключ-значение будут автоматически доступны через "суперглобальные" переменные PHP %%$ _ENV%% и %%$ _SERVER%%. Теперь вы можете ссылаться на эти глобальные переменные из ваших файлов настроек: ~%% 'key' => $_ENV['TEST_STRIPE_KEY'] ~%% Убедитесь, что вы добавили файл %%(t).env.local.php%% в файл %%(t).gitignore%%. Это позволит остальным разработчикам вашей команды создавать свои файлы настроек локальной среды, а также спрячет ваши важные настройки от системы контроля версий. Теперь на рабочем сервере в корне проекта создайте файл %%(t).env.php%%, содержащий соответствующие значения вашей рабочей среды. Так же как и файл %%(t).env.local.php%%, рабочий файл %%(t).env.php%% никогда не должен включаться в контроль версий. .(alert) Вы можете создать файл для каждой среды, поддерживаемой вашим приложением. Например, среда %%(t)development%% будет загружать файл %%(t).env.development.php%%, если такой существует. Но среда %%(t)production%% всегда использует файл %%(t).env.php%%. %% == Режим обслуживания == Когда ваше приложение находится в режиме обслуживания (//maintenance mode//), специальный ((docs/v4/templates шаблон)) будет отображаться вместо всех ваших ((docs/v4/quick#маршрут+))ов. Это позволяет "отключать" приложение, в момент обновления. Вызов %%(php) App::down()%% уже содержится в файле %%(t)app/start/global.php%%. Возвращённое им значение будет отправлено пользователю, когда приложение находится в режиме обслуживания. Для включения этого режима просто выполните команду **down** ((docs/v4/artisan Artisan)): %%(sh) php artisan down %% Чтобы выйти из режима обслуживания выполните команду **up**: %%(sh) php artisan up %% Для отображения собственного шаблона в режиме обслуживания вы можете добавить в %%(t)app/start/global.php%% подобный код: %%(php) App::down(function () { return Response::view('maintenance', array(), 503); }); %% %%(DOCNEW 4.1=efd541a0b218b1c6aafb73f0051c18ed150e3c24 25.05.2014 05:21:00) Если переданная в метод %%down%% функция-замыкание вернёт %%NULL%%, то для этого запроса режим обслуживания будет проигнорирован. === Режим обслуживания и очереди == Пока ваше приложения находится в режиме обслуживания, не будут обрабатываться никакие ((/docs/v4/queues задачи очередей)). Задачи продолжат обрабатываться как обычно, как только приложение выйдет из режима обслуживания. %%