Версія фреймворка: 8.x

Конфігурація

Вступ

Усі файли конфігурації фреймворку Laravel зберігаються вconfigкаталог. Кожен варіант задокументований, тож сміливо переглядайте файли та знайомтесь із доступними вам параметрами.

Конфігурація середовища

Часто корисно мати різні значення конфігурації залежно від середовища, в якому працює програма. Наприклад, ви можете використовувати інший драйвер кешу локально, ніж на виробничому сервері.

Щоб зробити це надзвичайним, Laravel використовуєDotEnvБібліотека PHP Ванса Лукаса. У новій інсталяції Laravel кореневий каталог вашої програми міститиме файл.env.exampleфайл. Якщо ви встановите Laravel через Composer, цей файл буде автоматично скопійовано в.env. В іншому випадку слід скопіювати файл вручну.

Ваш.envфайл не повинен бути призначений для керування джерелом програми, оскільки кожен розробник / сервер, що використовує вашу програму, може вимагати іншої конфігурації середовища. Крім того, це може становити ризик для безпеки у випадку, якщо зловмисник отримає доступ до вашого сховища керування джерелом, оскільки будь-які конфіденційні дані можуть бути розкриті.

Якщо ви розвиваєтеся з командою, ви можете продовжувати включати a.env.exampleфайл із вашою заявкою. Помістивши значення заповнювачів у прикладний файл конфігурації, інші розробники у вашій команді можуть чітко бачити, які змінні середовища потрібні для запуску вашого додатка. Ви також можете створити файл.env.testingфайл. Цей файл замінить файл.envфайл під час запуску тестів PHPUnit або виконання команд Artisan за допомогою--env=testingваріант.

Будь-яка змінна у вашому.envфайл може бути замінений зовнішніми змінними середовища, такими як змінні середовища рівня сервера або рівня системи.

Типи змінних середовищ

Всі змінні у вашому.envфайли аналізуються як рядки, тому було створено деякі зарезервовані значення, що дозволяють повернути ширший діапазон типів ізenv()функція:

.envЗначення env()Значення
правда (bool) правда
(правда) (bool) правда
помилковий (bool) хибний
(помилковий) (bool) хибне
порожній (рядок) ''
(порожній) (рядок) ''
нуль (нуль) нуль
(нуль) (нуль) null

Якщо вам потрібно визначити змінну середовища зі значенням, яке містить пробіли, ви можете зробити це, заключивши значення у подвійні лапки.

APP_NAME="My Application"

Отримання конфігурації середовища

Всі змінні, перелічені в цьому файлі, будуть завантажені в$_ENVPHP супер глобальний, коли ваша програма отримує запит. Однак ви можете використовуватиenvпомічник для отримання значень із цих змінних у файлах конфігурації. Насправді, переглянувши конфігураційні файли Laravel, ви помітите кілька варіантів, які вже використовують цей помічник:

'debug' => env('APP_DEBUG', false),

Друге значення передається вenvfunction є "значенням за замовчуванням". Це значення буде використано, якщо для даного ключа не існує змінної середовища.

Визначення поточного середовища

Поточне середовище програми визначається за допомогоюAPP_ENVзмінна від вашого.envфайл. Ви можете отримати доступ до цього значення черезenvironmentметод наAppфасад:

$environment = App::environment();

Ви також можете передати аргументи доenvironmentметод, щоб перевірити, чи відповідає середовище заданому значенню. Метод повернетьсяtrueякщо оточення відповідає будь-якому із заданих значень:

if (App::environment('local')) {
    // The environment is local
}

if (App::environment(['local', 'staging'])) {
    // The environment is either local OR staging...
}
Поточне виявлення середовища програми може бути замінене на рівні сервераAPP_ENVзмінна середовища. Це може бути корисно, коли вам потрібно спільно використовувати один і той же додаток для різних конфігурацій середовища, тому ви можете налаштувати певний хост так, щоб він відповідав даному середовищу у конфігураціях вашого сервера.

Приховування змінних середовища на сторінках Debug

Коли виняток не вловлюється іAPP_DEBUGзмінною середовища єtrue, на сторінці Debug буде показано всі змінні середовища та їх вміст. У деяких випадках вам може знадобитися затемнити певні змінні. Ви можете зробити це, оновившиdebug_hideваріант у вашомуconfig/app.phpфайл конфігурації.

Деякі змінні доступні як у змінних середовища, так і в даних сервера / запиту. Тому вам може знадобитися приховати їх для обох$_ENVі$_SERVER:

return [

    // ...

    'debug_hide' => [
        '_ENV' => [
            'APP_KEY',
            'DB_PASSWORD',
        ],

        '_SERVER' => [
            'APP_KEY',
            'DB_PASSWORD',
        ],

        '_POST' => [
            'password',
        ],
    ],
];

Доступ до значень конфігурації

Ви можете легко отримати доступ до значень конфігурації, використовуючи глобальнийconfigдопоміжну функцію з будь-якої точки вашої програми. Значення конфігурації можна отримати за допомогою синтаксису "крапка", який включає ім'я файлу та опцію, до якої ви хочете отримати доступ. Також може бути вказано значення за замовчуванням, яке буде повернуто, якщо параметр конфігурації не існує:

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

// Retrieve a default value if the configuration value does not exist...
$value = config('app.timezone', 'Asia/Seoul');

Щоб встановити значення конфігурації під час виконання, передайте масив доconfigпомічник:

config(['app.timezone' => 'America/Chicago']);

Кешування конфігурації

Щоб надати додатку прискорення, слід кешувати всі файли конфігурації в один файл за допомогоюconfig:cacheartisan командування. Це об’єднає всі параметри конфігурації для вашого додатку в один файл, який буде швидко завантажений фреймворком.

Зазвичай слід запускатиphp artisan config:cacheкоманда як частина вашої процедури розгортання виробництва. Команда не повинна запускатися під час локальної розробки, оскільки параметри конфігурації часто потрібно змінювати під час розробки вашої програми.

Якщо ви виконаєте файлconfig:cacheкоманди під час процесу розгортання, ви повинні бути впевнені, що телефонуєте лише наenvфункція з файлів конфігурації. Після кешування конфігурації файл.envфайл не буде завантажений, і всі дзвінки доenvфункція повернетьсяnull.

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

Коли ваша програма перебуває в режимі обслуговування, для всіх запитів до вашої програми відображатиметься спеціальний Шаблон. Це полегшує "вимкнення" програми під час її оновлення або під час технічного обслуговування. Перевірка режиму обслуговування входить у стандартний стек проміжного програмного забезпечення для вашої програми. Якщо програма перебуває в режимі обслуговування, aMaintenanceModeExceptionбуде видано з кодом стану 503.

Щоб увімкнути режим обслуговування, запустітьdownКоманда ремісників:

php artisan down

Ви також можете надати aretryваріант дляdownкоманда, яка буде встановлена ​​якRetry-AfterЗначення заголовка HTTP:

php artisan down --retry=60

В обхід режиму обслуговування

Навіть перебуваючи в режимі обслуговування, ви можете використовуватиsecretможливість вказати маркер обходу режиму обслуговування:

php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"

Після розміщення програми в режимі обслуговування ви можете перейти до URL-адреси програми, що відповідає цьому маркеру, і Laravel видасть браузеру обхідний файл cookie режиму обслуговування:

https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515

Коли ви отримуєте доступ до цього прихованого маршруту, ви будете перенаправлені на/маршрут програми. Після видачі файлу cookie у ваш браузер ви зможете нормально переглядати програму, ніби вона не перебуває в режимі обслуговування.

Попереднє відтворення View режиму обслуговування

Якщо ви використовуєтеphp artisan downпід час розгортання, користувачі все одно можуть іноді стикатися з помилками, якщо отримують доступ до програми під час оновлення залежностей Composer або інших компонентів інфраструктури. Це відбувається тому, що значна частина фреймворку Laravel повинна завантажитися, щоб визначити, чи ваш додаток перебуває в режимі технічного обслуговування, і зробити представлення режиму обслуговування за допомогою механізму шаблонування.

З цієї причини Laravel дозволяє попередньо відтворити View режиму обслуговування, яке буде повернуто на самому початку циклу запиту. Цей View відображається до завантаження залежностей вашої програми. Ви можете попередньо відтворити обраний вами шаблон за допомогоюdownкомандиrenderваріант:

php artisan down --render="errors::503"

Перенаправлення запитів на режим обслуговування

Перебуваючи в режимі обслуговування, Laravel відображатиме режим режиму обслуговування для всіх URL-адрес програм, до яких користувач намагається отримати доступ. Якщо ви бажаєте, ви можете доручити Laravel перенаправити всі запити на певну URL-адресу. Це може бути здійснено за допомогоюredirectваріант. Наприклад, ви можете перенаправити всі запити на/Ненависть:

php artisan down --redirect=/

Вимкнення режиму обслуговування

Щоб вимкнути режим обслуговування, використовуйтеupкоманда:

php artisan up
Ви можете налаштувати шаблон режиму обслуговування за замовчуванням, визначивши свій власний шаблон наresources/views/errors/503.blade.php.

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

Поки ваша програма перебуває в режимі обслуговування, ніробочі місця в черзібуде оброблено. Після того, як програма вийде з режиму обслуговування, із завданнями працюватимуть у звичайному режимі.

Альтернативи режиму обслуговування

Оскільки режим технічного обслуговування вимагає від вашої програми декількох секунд простою, розгляньте такі альтернативи, якНадіслатидля розгортання нульових простоїв за допомогою Laravel.