Конфигурация
Конфигурация Pimcore хранится в нескольких местах:
- Файлы
var/config/*.(php|yaml)записываются из административного интерфейса. Например, файлsystem.yamlсодержит настройки из System Settings. - Дерево конфигурации Symfony (в основном разбросанное по файлам
*.yaml) содержит все конфигурации Symfony и большинство конфигураций, связанных с Pimcore. - Набор констант
PIMCORE_*, которые используются для определения различных путей в файловой системе.
Конфигурация Symfony
Многие аспекты Pimcore можно настроить через дерево конфигурации Symfony, определённое в расширениях pimcore и pimcore_admin. Эти значения можно изменять через конфигурационные файлы в каталоге config (например, config/config.yaml).
Pimcore также включает набор стандартных конфигурационных файлов, которые, в отличие от стандартного проекта Symfony, не находятся в config/, а расположены в PimcoreCoreBundle.
Это позволяет поставлять и обновлять конфигурации по умолчанию, не изменяя код проекта в config/. Смотрите раздел конфигурация автоматической загрузки и определения маршрутизации для получения подробной информации, как это работает.
Стандартные конфигурации будут объединены с вашей пользовательской конфигурацией в config/ для построения итогового дерева конфигурации. Вы можете отладить значения, хранящиеся в дереве по следующей команде:
# это основная команда Symfony, которая работает для каждого пакета, опустите аргумент
# "pimcore" для получения списка для всех бандлов
$ bin/console debug:config pimcore
Кроме того, вы можете распечатать список допустимых разделов конфигурации с помощью следующей команды:
$ bin/console config:dump-reference pimcore
Константы Pimcore
Pimcore использует несколько констант для определения местонахождения определённых директорий (логи, ассеты, версии и т. п.). Эти константы определены в lib/Bootstrap.php.
Если вам нужно переопределить эти константы (например, чтобы использовать специальный каталог для ассетов или версий в объектном хранилище AWS S3), доступны несколько способов:
- Создать файл
/config/pimcore/constants.phpи задать в нём необходимые константы. Pimcore пропустит установку любых констант, которые уже определены. - Определить переменную окружения с именем константы. При определении константы Pimcore проверит, существует ли переменная окружения с тем же именем, и будет использовать её вместо значения по умолчанию.
- Определить переменную окружения в файле
/.env, который будет автоматически загружен через компонент Symfony Dotenv, если он существует. Переменные окружения, заданные здесь, будут иметь тот же эффект, что и «реальные» переменные окружения. Подробности см. в разделе конфигурации, специфичные для окружения.
В репозитории Pimcore Skeleton есть файл-пример,
constants.example.php.
Следующий файл является примером того, как вы можете перезаписать некоторые пути:
<?php
// чтобы использовать этот файл, переименуйте его в constants.php
// вы можете использовать этот файл, чтобы переопределить константы, определённые в lib/Bootstrap.php
define("PIMCORE_CLASS_DIRECTORY", "/my/tmp/path");
Пожалуйста, посмотрите lib/Bootstrap.php для полного списка определённых констант.
Константа PIMCORE_PROJECT_ROOT
Есть одна особая константа PIMCORE_PROJECT_ROOT , которая используется для определения корневого каталога (см. Структура каталогов) приложения.
В отличие от остальных констант, эта константа не определяется в constants.php , так как она уже требуется для разрешения пути к файлу constants.php. Она определяется в классе загрузки \Pimcore\Bootstrap::setProjectRoot().
При необходимости вы можете изменить корень проекта через переменную окружения (или определив константу до загрузки входной точки), и Pimcore будет использовать значение по умолчанию, если оно не задано. Если вы используете стандартную структуру каталогов Pimcore, поставляемую в ZIP‑архиве, ничего дополнительно задавать не нужно. Для специальных настроек у вас есть полный контроль над используемыми путями.
В отличие от остальных констант,PIMCORE_PROJECT_ROOT нельзя задать через .env — на этом этапе Pimcore ещё не знает, где искать файл .env.
Добавление логики в процесс старта
Если вам нужно выполнить код, влияющий на процесс старта Pimcore, вы можете добавить файл в /config/pimcore/startup.php — он будет автоматически подключён в процессе bootstrap. Конкретно, он загрузится после выполнения остальных шагов начальной загрузки (загрузка автолоадера, парсинг констант и т. п.), но до загрузки и запуска kernel.
Это даёт возможность перенастроить параметры окружения до их использования и подготовить систему под ваши нужды. Примеры:
- Установка доверенных прокси на объекте
Request - Влияние на обработку окружения по умолчанию
<?php
// /config/pimcore/startup.php
use \Symfony\Component\HttpFoundation\Request;
Request::setTrustedProxies(['192.0.0.1', '10.0.0.0/8'], Request::HEADER_X_FORWARDED_ALL);
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.