Дата обновления перевода 2022-01-30
Конфигурирование в ядре¶
Некоторую конфигурацию можно сделать прямо в классе ядра (по умолчанию размещённое
в src/Kernel.php
). Вы можете сделать это переопределив конкретные меоды
в родительском классе Kernel
.
Конфигурация¶
В предыдущих версиях Symfony существовала другая опция конфигурации для определения
“имени ядра”, что важно только при
использовании приложений с несколькими ядрами.
Если вам нужен уникальный ID для ваших ядер, используйте параметр kernel.container_class
или метод Kernel::getContainerClass()
.
Набор символов¶
тип: string
по умолчанию: UTF-8
Возвращает набор символов, который используется в приложении. Это значение
отображается через параметр конфигурации kernel.charset
и метод
getCharset()
.
Чтобы изменить это значение, переопределите метод getCharset()
,
и верните другой набор символов:
// src/Kernel.php
namespace App;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
// ...
class Kernel extends BaseKernel
{
public function getCharset()
{
return 'ISO-8859-1';
}
}
.. _configuration-kernel-project-directory-ru:
Каталог проекта¶
тип: string
по умолчанию: каталог проекта composer.json
Возвращает абсолютный путь к корневому каталогу вашего проекта Symfony, который используется приложениями для выполнения операций с путями файлов, относящихся к корневому каталогу проекта.
По умолчанию, его значение вычисляет автоматически, как каталог, где хранится
главный файл composer.json
. Это значение отображается через параметр конфигурации
kernel.project_dir
и метод getProjectDir()
.
Если вы не используете Composer, или изменили местоположение файла composer.json
, или
удалили его полностью (например, на серверах производства), вы можете переопределить
метод getProjectDir()
, чтобы он возвращал
правильный каталог проекта:
// 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()
New in version 5.2: Функция каталога компоновки была представлена в Symfony 5.2.
Возвращает абсолютный путь к каталогу компоновки вашего проекта 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
, временная отметка момента, когда контейнер был создан (результат выполнения функции PHPtime
);container.build_id
, результат слияния двух предыдущих параметров и шифрования результатов с использованием CRC32.
Так как значение container.build_time
будет изменяться каждый раз, когда вы будете
компилировать приложение, компиляция не будет строго детерминированной. Если вам это
важно, решением будет использовать другой параметр конфигурации под названием
kernel.container_build_time
, и установить его в неизменное время создания,
чтобы достичь строго детерминированной компиляции:
- YAML
1 2 3 4
# config/services.yaml parameters: # ... kernel.container_build_time: '1234567890'
- XML
1 2 3 4 5 6 7 8 9 10 11
<!-- config/services.xml --> <?xml version="1.0" encoding="UTF-8" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd"> <parameters> <!-- ... --> <parameter key="kernel.container_build_time">1234567890</parameter> </parameters> </container>
- PHP
1 2 3 4
// config/services.php // ... $container->setParameter('kernel.container_build_time', '1234567890');
Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.