Конфігурування в ядрі
Дата оновлення перекладу 2024-05-29
Конфігурування в ядрі
Додатки Symfony визначають клас ядра (який за замовчуванням знаходиться за адресою
src/Kernel.php
), який включає в себе декілька опцій для конфігурування. У цій
статті пояснюється, як сконфігурувати ці опції і показується список параметрів контейнера,
створених Symfony на основі цієї конфігурації.
kernel.build_dir
тип: string
за замовчуванням: $this->getCacheDir()
Цей параметр зберігає абсолютний шлях каталогу побудови вашого додатку Symfony. Цей каталог може бути використано для відокремлення кешу тільки для читання (тобто, скомпільованого контейнера) від кешу для читання і запису (тобто, пулів кешу). Вкажіть значення не за замовчуванням, якщо додаток розгорнуто у файловій системі, доступній лише для читання, наприклад, у контейнері Docker або AWS Lambda.
Це значення також можна отримати за допомогою методу класу ядра getBuildDir(), який ви можете перевизначити для повернення іншого значення.
Ви також можете змінити директорію побудови, визначивши змінну оточення
з іменем APP_BUILD_DIR
, значенням якої є абсолютний шлях до папки побудови.
kernel.bundles
тип: array
за замовчуванням: []
Цей параметр зберігає список пакетів, зареєстрованих у додатку та FQCN їхнього головного класу пакета:
1 2 3 4 5
[
'FrameworkBundle' => 'Symfony\Bundle\FrameworkBundle\FrameworkBundle',
'TwigBundle' => 'Symfony\Bundle\TwigBundle\TwigBundle',
// ...
]
Це значення також доступне через метод класу ядра getBundles().
kernel.bundles_metadata
тип: array
за замовчуванням: []
Цей параметр зберігає список пакетів, зареєстрованих у додатку та деякі метадані про них:
1 2 3 4 5 6 7 8 9 10 11
[
'FrameworkBundle' => [
'path' => '/<path-to-your-project>/vendor/symfony/framework-bundle',
'namespace' => 'Symfony\Bundle\FrameworkBundle',
],
'TwigBundle' => [
'path' => '/<path-to-your-project>/vendor/symfony/twig-bundle',
'namespace' => 'Symfony\Bundle\TwigBundle',
],
// ...
]
Це значення не демонструється у жодному методі класу ядра, тому ви можете отримати його лише через параметр контейнера.
kernel.cache_dir
тип: string
за замовчуванням: $this->getProjectDir()/var/cache/$this->environment
Цей параметр зберігає абсолютний шлях до каталогу кешу вашого додатку Symfony. Значення за замовчуванням генерується Symfony на основі поточного середовища конфігурації . Ваш додаток може записувати дані до цього шляху під час прогону.
Це значення також можна отримати за допомогою методу класу ядра getCacheDir(), який ви можетеʼ перевизначити, щоб повернути інше значення.
kernel.charset
тип: string
за замовчуванням: UTF-8
Цей параметр зберігає тип кодування або кодування символів, що використовується у додатку. Це значення також можна отримати за допомогою методу класу ядра getCharset(), який ви можете перевизначити для повернення іншого значення:
1 2 3 4 5 6 7 8 9 10 11 12 13
// src/Kernel.php
namespace App;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
// ...
class Kernel extends BaseKernel
{
public function getCharset(): string
{
return 'ISO-8859-1';
}
}
kernel.container_build_time
тип: string
за замовчуванням: the result of executing time()
Symfony слідує філософії відтворюваних побудов, яка гарантує, що результат компіляції одного і того ж коду не призведе до різних результатів. Це допомагає перевірити, що даний бінарний або виконуваний код було скомпільовано з деякого надійного вихідного коду.
На практиці, скомпільований сервіс-контейнер вашого додатку завжди буде однаковим, якщо ви не зміните його вихідний код. Це показано за допомогою цих параметрів контейнера:
container.build_hash
, хеш змісту всіх ваших вихідних файлів;container.build_time
, часова мітка моменту, коли контейнер було побудовано (результат виконання функції PHP time);container.build_id
, результат об'єднання двох попередніх параметрів і шифрування результату за допомогою CRC32.
Оскільки значення container.build_time
буде змінюватися кожного разу при
компіляції додатку, побудвана не буде строго відтворюваною. Якщо вас це турбує,
то рішенням є використання іншого параметра контейнера, який називається
kernel.container_build_time
і його встановлення на незмінний час побудови, щоб
досягти строго відтворюваної побудови:
1 2 3 4
# config/services.yaml
parameters:
# ...
kernel.container_build_time: '1234567890'
kernel.container_class
тип: string
за замовчуванням: (див. пояснення нижче)
Цей параметр зберігає унікальний ідентифікатор класу контейнера. На практиці це важливо лише для того, щоб гарантувати, що кожне ядро має унікальний ідентифікатор, за використання додатків з декількома ядрами.
Значення за замовчуванням генерується Symfony на основі поточного
середовища конфігурації та
режиму налагодження . Наприклад, якщо ядро вашої програми
визначено у просторі імен App
, виконується у середовищі dev
і увімкнено
режим debug
, значенням цього параметра буде App_KernelDevDebugContainer
.
Це значення також можна отримати за допомогою методу класу ядра getContainerClass(), який ви можете перевизначити, щоб повернути інше значення:
1 2 3 4 5 6 7 8 9 10 11 12 13
// src/Kernel.php
namespace App;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
// ...
class Kernel extends BaseKernel
{
public function getContainerClass(): string
{
return sprintf('AcmeKernel%s', random_int(10_000, 99_999));
}
}
kernel.debug
тип: boolean
за замовчуванням: (значення, передане в якості аргумента при запуску ядра)
Цей параметр зберігає значення поточного режиму налагодження , який використовується додатком.
kernel.default_locale
Цей параметр зберігає значення парамтера framework.default_locale .
kernel.enabled_locales
Цей параметр зберігає значення параметра framework.enabled_locales .
kernel.environment
тип: string
за замовчуванням: (значення, передане в якості аргумента при запуску ядра)
Цей параметр зберігає імʼя поточного середовища конфігурації , що використовується додатком.
Це значення визначає опції конфігурації, що використовуються для запуску додатку, тоді як
опція kernel.runtime_environment визначає
місце, де розгорнуто додаток. Це дозволяє, наприклад, запускати додаток з конфігурацією prod
(kernel.environment
) у різних сценаріях, таких як staging
або production
(kernel.runtime_environment
).
kernel.error_controller
Цей параметр зберігає значення параметра framework.error_controller .
kernel.http_method_override
Цей параметр зберігає значення параметра framework.http_method_override .
kernel.logs_dir
тип: string
за замовчуванням: $this->getProjectDir()/var/log
Цей параметр зберігає абсолютний шлях до каталогу логів вашого додатку Symfony. Він обчислюється автоматично на основі поточного середовища конфігурації .
Це значення також можна отримати за допомогою методу класу ядра getLogDir(), який ви можете перевизначити для повернення іншого значення.
kernel.project_dir
тип: string
за замовчуванням: каталог проекту composer.json
Цей параметр зберігає абсолютний шлях до кореневого каталогу вашого додатку Symfony, який використовується додатками для виконання операцій з шляхами файлів відносних кореневого каталогу проекту.
За замовчуванням його значення обчислюється автоматично як каталог, де знаходиться
головний файл composer.json
. Це значення також демонструється за допомогою методу
класу ядра getProjectDir().
Якщо ви не використовуєте Composer, або змінили розташування файлу composer.json
, або
видалили його повністю (наприклад, на серверах виробництва), перевизначте метод
getProjectDir()
для повернення іншого значення:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// src/Kernel.php
namespace App;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
// ...
class Kernel extends BaseKernel
{
// ...
public function getProjectDir(): string
{
return \dirname(__DIR__);
}
}
kernel.runtime_environment
тип: string
за замовчуванням: %env(default:kernel.environment:APP_RUNTIME_ENV)%
Цей параметр зберігає імʼя поточного середовища прогону, що використовується додатком.
Це значення визначає місце, де розгорнуто додаток, тоді як параметр
kernel.environment визначає
опції конфігурації, що використовуються для запуску додатку. Це дозволяє, наприклад,
запускати додаток з конфігурацією prod
(kernel.environment
) у різних
сценаріях, таких як staging
або production
(kernel.runtime_environment
).
kernel.runtime_mode
тип: string
за замовчуванням: %env(query_string:default:container.runtime_mode:APP_RUNTIME_MODE)%
Цей параметр зберігає рядок запиту поточного середовища виконання, що використовується додатком. Наприклад,
рядок запиту має вигляд web=1&worker=0
, коли додаток працює у веб-режимі і web=1&worker=1
при роботі
на довготривалому веб-сервері. Цей параметр можна встановити за допомогою змінної середовища
APP_RUNTIME_MODE
.
kernel.runtime_mode.web
тип: boolean
за замовчуванням: %env(bool:default::key:web:default:kernel.runtime_mode:)%
Чи працює додаток у веб-середовищі.
kernel.runtime_mode.cli
тип: boolean
за замовчуванням: %env(not:default:kernel.runtime_mode.web:)%
Чи запущено додаток у середовищі CLI. За замовчуванням
це значення протилежне параметру kernel.runtime_mode.web
.
kernel.runtime_mode.worker
тип: boolean
за замовчуванням: %env(bool:default::key:worker:default:kernel.runtime_mode:)%
Чи працює додаток у робочому/довготривалому середовищі. Не всі веб-сервери підтримують це, і вам доведеться використовувати довготривалий веб-сервер, такий як FrankenPHP.
kernel.secret
тип: string
за замовчуванням: %env(APP_SECRET)%
Цей параметр зберігає значення параметра framework.secret .
kernel.trust_x_sendfile_type_header
Цей параметр зберігає значення параметра framework.trust_x_sendfile_type_header .
kernel.trusted_hosts
Цей параметр зберігає значення параметра framework.trusted_hosts .
kernel.trusted_proxies
Цей параметр зберігає значення параметра framework.trusted_proxies .