Конфигурирование в Kernel
Дата обновления перевода 2023-01-16
Конфигурирование в Kernel
Некоторую конфигурацию можно сделать прямо в классе ядра (по умолчанию размещённое
в src/Kernel.php
). Вы можете сделать это переопределив конкретные меоды
в родительском классе Kernel.
Конфигурация
В предыдущих версиях Symfony существовала другая опция конфигурации для определения
"имени ядра", что важно только при
использовании приложений с несколькими ядрами.
Если вам нужен уникальный ID для ваших ядер, используйте параметр kernel.container_class
или метод Kernel::getContainerClass()
.
Набор символов
тип: string
по умолчанию: UTF-8
Возвращает набор символов, который используется в приложении. Это значение
отображается через параметр конфигурации kernel.charset
и метод
getCharset().
Чтобы изменить это значение, переопределите метод 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()
{
return 'ISO-8859-1';
}
}
Каталог проекта
тип: string
по умолчанию: каталог проекта composer.json
Возвращает абсолютный путь к корневому каталогу вашего проекта Symfony, который используется приложениями для выполнения операций с путями файлов, относящихся к корневому каталогу проекта.
По умолчанию, его значение вычисляет автоматически, как каталог, где хранится
главный файл composer.json
. Это значение отображается через параметр конфигурации
kernel.project_dir
и метод 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__);
}
}
Каталог кеша
тип: string
по умолчанию: $this->getProjectDir()/var/cache/$this->environment
Возвращает абсолютный путь к каталогу кеша вашего проекта Symfony. Вычсиляется автоматически, основываясь на текущем окружении . Данные могут быть записаны в этот путь во время работы.
Это значение появляется через параметр конфигурации kernel.cache_dir
и метод
getCacheDir(). Чтобы изменить эту
настройку, переопределите метод getCacheDir()
, чтобы он возвращал правильный
каталог кеша.
Каталог компоновки
тип: string
по умолчанию: $this->getCacheDir()
Возвращает абсолютный путь к каталогу компоновки вашего проекта Symfony. Этот каталог может быть использован для разделения кеша только для чтения (т.е. скомпилированного контейнера) и кеша для чтения и записи (т.е. пулов кеша). Укажите значение не по умолчанию, когда приложение запускается в файловой системе только для чтения, вроде контейнера Docker или AWS Lambda.
Это значение появляется через параметр конфигурации kernel.build_dir
и метод
getBuildDir(). Чтобы изменить эту
настройку, переопределите метод getBuildDir()
, чтобы он возвращал правильный
каталог компоновки.
Каталог логов
тип: string
по умолчанию: $this->getProjectDir()/var/log
Возвращает абсолютный путь к каталогу логов вашего проекта Symfony. Вычисляется автоматически, основываясь на текущем окружении .
Это значение появляется через параметр конфигурации kernel.logs_dir
и метод
getLogDir(). Чтобы изменить эту
настройку, переопределите метод getLogDir()
, чтобы он возвращал правильный каталог
логов.
Время построения контейнера
тип: string
по умолчанию: результат выполнения time()
Symfony следует философии детерминированной компиляции, что гарантирует, что результат компиляции такого же исходного кода не приведет к другим результатам. Это помогает проверить, чтобы заданный бинарный или выполняемый код был скомпилирован из какого-то доверенного исходного кода.
На практике, скомпилированный сервис-контейнер вашего приложения всегда будет одинаков, если вы не измените его исходный код. Он появляется через такие параметры конфигурации:
container.build_hash
, хеш содержания всех ваших исходных файлов;container.build_time
, временная отметка момента, когда контейнер был создан (результат выполнения функции PHP time);container.build_id
, результат слияния двух предыдущих параметров и шифрования результатов с использованием CRC32.
Так как значение container.build_time
будет изменяться каждый раз, когда вы будете
компилировать приложение, компиляция не будет строго детерминированной. Если вам это
важно, решением будет использовать другой параметр конфигурации под названием
kernel.container_build_time
, и установить его в неизменное время создания,
чтобы достичь строго детерминированной компиляции:
- YAML
- XML
- PHP
1 2 3 4
# config/services.yaml
parameters:
# ...
kernel.container_build_time: '1234567890'