Настройка

Вступление

Все файлы настроек Laravel хранятся в папке config. Опции хорошо описаны в комментариях, так что рекомендуем внимательно изучить эти файлы.

Действия после установки

Имя вашего приложения

После установки Laravel вы можете придумать имя своему приложению или оставить стандартное - App. Это имя будет фигурировать в качестве корневого элемента в пространстве имён классов, которые будут использоваться в вашем приложении. По умолчанию ваше приложение находится в папке app, имеет имя App и автозагружается при помощи Composer согласно стандарту PSR-4. Вы можете изменить его при помощи Artisan-команды app:name.

Например, чтобы изменить имя приложения на «Horsefly», выполните эту команду в корневом каталоге вашего приложения:

php artisan app:name Horsefly

Дальнейшее конфигурирование приложения

Laravel «из коробки» практически не требует дополнительного конфигурирования - вы можете сразу начать писать код. Максимум, вам может быть нужно изменить настройки доступа к базе данных в config/database.php и, возможно, изменить параметры timezone и locale в config/app.php.

Далее, вам нужно определиться с названием среды выполнения, в которой будет работать ваше приложение на данной машине. Например, когда вы разрабатываете приложение, вам нужно видеть подробный текст возникающих ошибок. По умолчанию фреймворк считает, что выполняется в среде production и в ней текст ошибки не выводится. Поэтому вы определяете, что на данной машине у вас среда выполнения local и в config/local/app.php ставите параметр debug в true.

Примечание Никогда не ставьте app.debug в true в продакшне, т.е. на хостинге. Просто никогда.

Права на запись

Папки внутри storage должны быть доступны веб-серверу для записи. Если вы устанавливаете фреймворк на Linux или MacOs - открыть папки на запись можно командой chmod -R 777 storage

Получение и установка значений настроек

Для доступа к настройкам существует фасад Config:

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

Config::set('app.timezone', 'America/Chicago');

Так же можно использовать функцию config:

$value = config('app.timezone');

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

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

Для упрощения это задачи Laravel использует библиотеку DotEnv от Vance Lucas. В корне только что созданного приложения содержится файл .env.example. Если вы устанавливали Laravel через Composer, то этот файл был автоматически переименован в .env, иначе вы должны сделать это самостоятельно.

Все переменные, описанные в этом файле, будут автоматически доступны вашему приложения в суперглобальной переменной $_ENV. Вы можете использовать функцию env для получения данных из этого массива внутри ваших файлов настроек. Если вы посмотрите в конфигурационные файлы, то увидите, что некоторые опции уже устанавливаются с использованием этой функции! Не стесняйтесь изменять эти переменные под свои нужны, как на локальной машине, так и в продакшне.

Однако помните, что файл .env не должен попадать в систему контроля версий (добавьте его в .gitignore), так как каждый разработчик и каждый сервер могут требовать своих настроек среды выполнения, а так же это позволит спрятать ваши конфиденциальные данные от системы контроля версий.

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

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

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

$environment = $app->environment();

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

if ($app->environment('local'))
{
    // Среда - local
}

if ($app->environment('local', 'staging'))
{
    // Среда - local ИЛИ staging
}

$app можно получить из сервис-контейнера по ключу 'Illuminate\Contracts\Foundation\Application'. Если вы используете вышеприведенный код в сервис-провайдере, то вместо $app используйте $this->app.

Так же можно использовать функцию app и фасад App:

$environment = app()->environment();

$environment = App::environment();

Кэширование настроек

Что бы немного ускорить приложение, вы можете закэшировать настройки (объединить все файлы настроек в один), используя Artisan-команду config:cache.

Как правило, нужно добавить команду config:cache в ваш механизм развёртывания приложения (application deployment).

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

Когда ваше приложение находится в режиме обслуживания (maintenance mode), специальный шаблон будет отображаться для всех запросов к вашему приложению. Это позволяет «отключать» ваше приложение во время обновления или обслуживания. Проверка на режим обслуживания уже включена в стандартный набор middleware вашего приложения. Если приложение находится в режиме обслуживания, то будет выброшено исключение HttpException с кодом 503.

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

php artisan down

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

php artisan up

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

Стандартный шаблон для режима обслуживания находится в файле resources/views/errors/503.blade.php.

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

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

Красивые URL

Apache

Laravel поставляется вместе с файлом public/.htaccess, который настроен для обработки URL без указания index.php. Если вы используете Apache в качестве веб-сервера обязательно включите модуль mod_rewrite.

Если стандартный .htaccess не работает для вашего Apache, попробуйте следующий:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

Nginx

Если вы используете в качестве веб-сервера Nginx, то используйте для ЧПУ следующую конструкцию:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

Если вы используете Homestead, то вам ничего делать не нужно, там всё это уже настроено.