Перейти к основному содержимому

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

Конфигурация 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. Это даёт возможность перенастроить параметры окружения до их использования и подготовить систему под ваши нужды. Примеры:

<?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);


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.