Данная статья документации актуальна для версий 5.3, 5.2 и 5.0, для версии 5.1 не актуальна.
Введение
Все файлы настроек Laravel хранятся в папке config. Каждая настройка задокументирована, поэтому не стесняйтесь изучить эти файлы и познакомиться с доступными возможностями конфигурирования.
добавлено в 5.0 ()
После установки
Название вашего приложения
После установки Laravel вам может потребоваться «назвать» ваше приложение. По умолчанию каталог app находится в пространстве имён PHPApp
и автоматически загружается с помощью Composer по стандарту автозагрузки PSR-4. Но вы можете изменить пространство имён в соответствии с названием вашего приложения с помощью Artisan-команды shapp:name
.
Например, если ваше приложение называется «Horsefly», вы можете выполнить следующую команду в корне вашей инсталляции:
shphp artisan app:name Horsefly
Задание имени для вашего приложения вовсе не обязательно, и вы можете оставить пространство имён PHPApp
, если захотите.
Другие настройки
После установки Laravel нужно настроить самую малость. Вы можете сразу начинать разработку! Но если захотите, просмотрите файл config/app.php и его документацию. Он содержит несколько параметров, таких как timezone и locale, которые могут пригодиться для настройки вашего приложения в зависимости от вашего местоположения.
После установки Laravel вам также надо настроить вашу локальную среду.
Внимание: никогда не устанавливайте параметр app.debug в значение true для продакшна.
Права доступа
Для Laravel может потребоваться настроить один набор прав доступа: веб-серверу требуются права записи в папки, находящиеся в storage и vendor.
Настройки среды
Часто необходимо иметь разные значения для различных настроек в зависимости от среды, в которой выполняется приложение. Например, вы можете захотеть использовать разные драйвера кэша на локальном и продакшн-сервере.
Для этого в Laravel используется PHP-библиотека DotEnv от Ванса Лукаса. В свежей инсталляции Laravel в корне вашего приложения будет файл .env.example. Если вы установили Laravel с помощью Composer, этот файл будет автоматически переименован в .env, иначе вам следует сделать это вручную.
добавлено в 5.3 ()
Все перечисленные в этом файле переменные будут загружены в супер-глобальную переменную PHP PHP$_ENV
, когда ваше приложение получит запрос. Но вы можете использовать вспомогательную функцию PHPenv()
для получения значений этих переменных в ваших конфигурационных файлах. На самом деле, если вы заглянете в файлы настроек Laravel, то заметите несколько опций, уже использующих эту функцию:
'debug' => env('APP_DEBUG', false),
Второе аргумент этой функции — значение по умолчанию. Оно будет использовано, если такой переменной среды нет.
Не бойтесь изменять ваши переменные среды так, как необходимо для вашего локального сервера, а также для среды продакшна. Но ваш файл .env не должен быть включён в систему контроля версий вашего приложения, так как каждому использующему ваше приложение разработчику/серверу может потребоваться разная настройка среды.
Если вы работаете в команде, то, возможно, вам захочется и дальше поставлять файл .env.example с вашим приложением. Поместив примеры значений в этот файл, вы дадите понять другим разработчикам, какие переменные среды необходимы для запуска вашего приложения.
Определение текущей среды
добавлено в 5.2 ()
Текущая среда приложения определяется по переменной PHPAPP_ENV
в файле .env. Вы можете получить это значение методом PHPenvironment()
фасада App:
$environment = App::environment();
Также вы можете передавать аргументы в метод PHPenvironment()
, чтобы проверить — совпадает ли имя среды с заданным значением. Метод вернёт PHPtrue
, если среда совпадёт с любым из них:
if (App::environment('local')) {
// Среда локальная (local)
}
if (App::environment('local', 'staging')) {
// Среда локальная (local) ИЛИ отладочная (staging)...
}
Экземпляр приложения также доступен через вспомогательный метод PHPapp()
:
$environment = app()->environment();
добавлено в 5.0 ()
Вы можете получить имя текущей среды приложения с помощью метода PHPenvironment
для экземпляра PHPApplication
:
$environment = $app->environment();
Также вы можете передавать аргументы в метод PHPenvironment()
, чтобы проверить — совпадает ли имя среды с заданным значением. Метод вернёт PHPtrue
, если среда совпадёт с любым из них:
if ($app->environment('local'))
{
// Среда локальная (local)
}
if ($app->environment('local', 'staging'))
{
// Среда локальная (local) ИЛИ отладочная (staging)...
}
Чтобы получить экземпляр приложения, выполните контракт Illuminate\Contracts\Foundation\Application с помощью сервис-контейнера. Конечно, когда вы находитесь внутри сервис-провайдера, экземпляр приложения доступен через переменную PHP$this->app
.
Экземпляр приложения также доступен через функцию PHPapp()
или фасад PHPApp
:
$environment = app()->environment();
$environment = App::environment();
Чтение значений настроек
Вы можете легко обращаться к значениям настроек с помощью глобальной вспомогательной функции PHPconfig()
из любого места в вашем приложении. К значениям настроек можно обращаться, используя «точечный» синтаксис, в который входит имя файла и название опции. При этом можно указать значение по умолчанию, которое будет возвращено при отсутствии запрашиваемой опции:
$value = config('app.timezone');
Для задания значений настроек во время выполнения передайте массив в функцию PHPconfig()
:
config(['app.timezone' => 'America/Chicago']);
добавлено в 5.0 ()
Кэширование настроек
Для повышения скорости работы вашего приложения вы можете кэшировать все файлы настроек в единый файл с помощью Artisan-команды shconfig:cache
. Она объединит все параметры настроек вашего приложения в единый файл, который будет быстро загружен фреймворком.
У вас должно войти в привычку запускать команду shphp artisan config:cache
, как типичная часть разработки. Не стоит запускать эту команду в процессе локальной разработки, так как при этом часто требуется изменять параметры настроек.
добавлено в 5.3 ()
Режим обслуживания
Когда ваше приложение находится в режиме обслуживания (maintenance mode), специальный шаблон будет отображаться для всех запросов в вашем приложении. Это позволяет легко «отключать» приложение во время его обновления или при обслуживании. Проверка режима обслуживания включена в стандартный набор посредников для вашего приложения. Когда приложение находится в режиме обслуживания, будет вызвано исключение MaintenanceModeException с кодом состояния 503 (для версии 5.2 и ранее — HttpException).
Для включения этого режима просто выполните Artisan-команду down:
shphp artisan down
добавлено в 5.3 ()
Чтобы выйти из режима обслуживания выполните команду up:
shphp artisan up
Шаблон ответа для режима обслуживания
Шаблон для ответов по умолчанию для режима обслуживания находится в resources/views/errors/503.blade.php. Вы можете изменить его для своего приложения.
Режим обслуживания и очереди
Пока ваше приложение находится в режиме обслуживания, не будут обрабатываться никакие задачи очередей. Задачи продолжат обрабатываться как обычно, как только приложение выйдет из режима обслуживания.
добавлено в 5.2 ()
Альтернативы режиму обслуживания
Поскольку для режима обслуживания необходима остановка вашего приложения на несколько секунд, рассмотрите такие альтернативы, как Envoyer, чтобы обеспечить обновление на лету.
добавлено в 5.0 ()
Красивые URL
Apache
Фреймворк поставляется с файлом public/.htaccess, который используется для реализации URL-адресов без index.php. Если вы используете Apache для работы вашего Laravel-приложения, убедитесь, что включён модуль mod_rewrite.
Если поставляемый с Laravel файл .htaccess не работает с вашей инсталляцией Apache, попробуйте этот:
confOptions +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Если ваш хостинг не разрешает опцию FollowSymlinks, попробуйте заменить её на Options +SymLinksIfOwnerMatch.
Nginx
В Nginx следующая директива в настройках вашего сайта позволит использовать «красивые» URL-адреса:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
Само собой, при использовании Homestead красивые URL будут настроены автоматически.