{{TOC}} {{DOCVER 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15, 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11}} .(alert) Данная статья документации актуальна для версий 5.3, 5.2 и 5.0, для версии 5.1 не актуальна. == Введение == Все файлы настроек Laravel хранятся в папке %%(t)config%%. Каждая настройка задокументирована, поэтому не стесняйтесь изучить эти файлы и познакомиться с доступными возможностями конфигурирования. %%(DOCNEW 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11) == После установки == === Название вашего приложения === После установки Laravel вам может потребоваться "назвать" ваше приложение. По умолчанию каталог %%(t)app%% находится в пространстве имён %%App%% и автоматически загружается с помощью Composer по ((http://www.php-fig.org/psr/psr-4/ стандарту автозагрузки PSR-4)). Но вы можете изменить пространство имён в соответствии с названием вашего приложения с помощью Artisan-команды %%(sh)app:name%%. Например, если ваше приложение называется "Horsefly", вы можете выполнить следующую команду в корне вашей инсталляции: %%(sh) php artisan app:name Horsefly ~%% Задание имени для вашего приложения вовсе не обязательно, и вы можете оставить пространство имён %%App%%, если захотите. === Другие настройки === После установки Laravel нужно настроить самую малость. Вы можете сразу начинать разработку! Но если захотите, просмотрите файл %%(t)config/app.php%% и его документацию. Он содержит несколько параметров, таких как %%(t)timezone%% и %%(t)locale%%, которые могут пригодиться для настройки вашего приложения в зависимости от вашего местоположения. После установки Laravel вам также надо ((#среда настроить вашу локальную среду)). .(alert) **Внимание:** никогда не устанавливайте параметр %%(t)app.debug%% в значение %%(t)true%% для продакшна. === Права доступа === Для Laravel может потребоваться настроить один набор прав доступа: веб-серверу требуются права записи в папки, находящиеся в %%(t)storage%% и %%(t)vendor%%. %% == ((#среда)) Настройки среды == Часто необходимо иметь разные значения для различных настроек в зависимости от среды, в которой выполняется приложение. Например, вы можете захотеть использовать разные драйвера кэша на локальном и продакшн-сервере. Для этого в Laravel используется PHP-библиотека ((https://github.com/vlucas/phpdotenv DotEnv)) от Ванса Лукаса. В свежей инсталляции Laravel в корне вашего приложения будет файл %%(t).env.example%%. Если вы установили Laravel с помощью Composer, этот файл будет автоматически переименован в %%(t).env%%, иначе вам следует сделать это вручную. %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) .(alert) Также вы можете создать файл %%(t).env.testing%%. Этот файл переопределит значения файла %%(t).env%% при запуске тестов PHPUnit и при выполнении Artisan-команд с ключом %%(sh)--env=testing%%. %% **Чтение настроек среды** Все перечисленные в этом файле переменные будут загружены в супер-глобальную переменную PHP %%$_ENV%%, когда ваше приложение получит запрос. Но вы можете использовать вспомогательную функцию %%env()%% для получения значений этих переменных в ваших конфигурационных файлах. На самом деле, если вы заглянете в файлы настроек Laravel, то заметите несколько опций, уже использующих эту функцию: %% 'debug' => env('APP_DEBUG', false), %% Второе аргумент этой функции - значение по умолчанию. Оно будет использовано, если такой переменной среды нет. Не бойтесь изменять ваши переменные среды так, как необходимо для вашего локального сервера, а также для среды продакшна. Но ваш файл %%(t).env%% не должен быть включён в систему контроля версий вашего приложения, так как каждому использующему ваше приложение разработчику/серверу может потребоваться разная настройка среды. Если вы работаете в команде, то, возможно, вам захочется и дальше поставлять файл %%(t).env.example%% с вашим приложением. Поместив примеры значений в этот файл, вы дадите понять другим разработчикам, какие переменные среды необходимы для запуска вашего приложения. === Определение текущей среды === %%(DOCNEW 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15) Текущая среда приложения определяется по переменной %%APP_ENV%% в файле %%(t).env%%. Вы можете получить это значение методом %%environment()%% ((//docs/v5/facades фасада)) %%(t)App%%: ~%% $environment = App::environment(); ~%% Также вы можете передавать аргументы в метод %%environment()%%, чтобы проверить - совпадает ли имя среды с заданным значением. Метод вернёт %%true%%, если среда совпадёт с любым из них: ~%% if (App::environment('local')) { // Среда локальная (local) } if (App::environment('local', 'staging')) { // Среда локальная (local) ИЛИ отладочная (staging)... } ~%% Экземпляр приложения также доступен через вспомогательный метод %%app()%%: ~%% $environment = app()->environment(); ~%% %% %%(DOCNEW 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11) Вы можете получить имя текущей среды приложения с помощью метода %%environment%% для экземпляра %%Application%%: ~%% $environment = $app->environment(); ~%% Также вы можете передавать аргументы в метод %%environment()%%, чтобы проверить - совпадает ли имя среды с заданным значением. Метод вернёт %%true%%, если среда совпадёт с любым из них: ~%% if ($app->environment('local')) { // Среда локальная (local) } if ($app->environment('local', 'staging')) { // Среда локальная (local) ИЛИ отладочная (staging)... } ~%% Чтобы получить экземпляр приложения, выполните контракт %%(t)Illuminate\Contracts\Foundation\Application%% с помощью ((/docs/v5/container сервис-контейнера)). Конечно, когда вы находитесь внутри ((/docs/v5/providers сервис-провайдера)), экземпляр приложения доступен через переменную %%$this->app%%. Экземпляр приложения также доступен через функцию %%app()%% или фасад %%App%%: ~%% $environment = app()->environment(); $environment = App::environment(); ~%% %% == Чтение значений настроек == %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15) Вы можете легко обращаться к значениям настроек с помощью глобальной вспомогательной функции %%config()%% из любого места в вашем приложении. К значениям настроек можно обращаться, используя "точечный" синтаксис, в который входит имя файла и название опции. При этом можно указать значение по умолчанию, которое будет возвращено при отсутствии запрашиваемой опции: ~%% $value = config('app.timezone'); ~%% Для задания значений настроек во время выполнения передайте массив в функцию %%config()%%: ~%% config(['app.timezone' => 'America/Chicago']); ~%% %% %%(DOCNEW 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11) Вы легко можете прочитать значения настроек, используя фасад %%Config%%: ~%% $value = Config::get('app.timezone'); Config::set('app.timezone', 'America/Chicago'); ~%% Вы также можете использовать вспомогательную функцию %%config%%: ~%% $value = config('app.timezone'); ~%% %% == Кэширование настроек == Для повышения скорости работы вашего приложения вы можете кэшировать все файлы настроек в единый файл с помощью Artisan-команды %%(sh)config:cache%%. Она объединит все параметры настроек вашего приложения в единый файл, который будет быстро загружен фреймворком. У вас должно войти в привычку запускать команду %%(sh)php artisan config:cache%%, как типичная часть разработки. Не стоит запускать эту команду в процессе локальной разработки, так как при этом часто требуется изменять параметры настроек. %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) .(alert) Если вы выполняете команду %%(sh)config:cache%% во время процесса развёртывания, вы должны быть уверены, что вызываете функцию %%env()%% только из ваших файлов настроек. %% == Режим обслуживания == Когда ваше приложение находится в режиме обслуживания (//maintenance mode//), специальный шаблон будет отображаться для всех запросов в вашем приложении. Это позволяет легко "отключать" приложение во время его обновления или при обслуживании. Проверка режима обслуживания включена в стандартный набор посредников для вашего приложения. Когда приложение находится в режиме обслуживания, будет вызвано исключение %%(t)MaintenanceModeException%% с кодом состояния 503 (для версии 5.2 и ранее - %%(t)HttpException%%). Для включения этого режима просто выполните Artisan-команду **down**: %%(sh) php artisan down %% %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) Также вы можете передать в команду **down** опции **message** и **retry**. Значение **message** можно использовать для вывода или записи в журнал необходимого сообщения, а значение **retry** будет задано в качестве значения HTTP-заголовка %%(t)Retry-After%%: %%(sh) php artisan down --message="Upgrading Database" --retry=60 ~%% %% Чтобы выйти из режима обслуживания выполните команду **up**: %%(sh) php artisan up %% **Шаблон ответа для режима обслуживания** Шаблон для ответов по умолчанию для режима обслуживания находится в %%(t)resources/views/errors/503.blade.php%%. Вы можете изменить его для своего приложения. **Режим обслуживания и очереди** Пока ваше приложение находится в режиме обслуживания, не будут обрабатываться никакие ((/docs/v5/queues задачи очередей)). Задачи продолжат обрабатываться как обычно, как только приложение выйдет из режима обслуживания. %%(DOCNEW 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15) **Альтернативы режиму обслуживания** Поскольку для режима обслуживания необходима остановка вашего приложения на несколько секунд, рассмотрите такие альтернативы, как ((https://envoyer.io/ Envoyer)), чтобы обеспечить обновление на лету. %% %%(DOCNEW 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11) == Красивые URL == === Apache === Фреймворк поставляется с файлом %%(t)public/.htaccess%%, который используется для реализации URL-адресов без %%(t)index.php%%. Если вы используете Apache для работы вашего Laravel-приложения, убедитесь, что включён модуль %%(t)mod_rewrite%%. Если поставляемый с Laravel файл %%(t).htaccess%% не работает с вашей инсталляцией Apache, попробуйте этот: %%(conf) Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] ~%% Если ваш хостинг не разрешает опцию %%(t)FollowSymlinks%%, попробуйте заменить её на %%(t)Options +SymLinksIfOwnerMatch%%. === Nginx === В Nginx следующая директива в настройках вашего сайта позволит использовать "красивые" URL-адреса: ~%% location / { try_files $uri $uri/ /index.php?$query_string; } ~%% Само собой, при использовании ((/docs/v5/homestead Homestead)) красивые URL будут настроены автоматически. %%