Обновление Pimcore с версии 10.x до версии 11
Задачи перед обновлением
Миграция системных настроек
В Pimcore 11 системные настройки используют LocationAwareConfigRepository. Чтобы сохранить ваши специфические настройки, выполните следующие шаги:
База данных
При обновлении до версии 11 необходимо изменить тип данных с json_array на json, так как json_array был удален в doctrine/dbal 3.
Используйте следующий скрипт, чтобы найти столбцы, содержащие json_array:
mysqldump -u <USERNAME> -p <PASSWORD> --no-data <DATABASENAME> | grep -i json_array
Внешний вид и брендинг
В Pimcore 11 эти настройки отделены от общих системных настроек и по умолчанию хранятся в var/config/admin_system_settings/admin_system_settings.yaml. Скопируйте все релевантные параметры из var/config/system.yaml в var/config/admin_system_settings/admin_system_settings.yaml, чтобы сохранить ваши настройки.
Для сохранения настроек в хранилище БД (Settings Store), используйте конфиг:
pimcore_admin:
config_location:
admin_system_settings:
write_target:
type: 'settings-store'
read_target:
type: 'settings-store'
Системные настройки
Скопируйте релевантные параметры из var/config/system.yaml в var/config/system_settings/system_settings.yaml.
Чтобы использовать Settings Store:
pimcore:
config_location:
system_settings:
write_target:
type: 'settings-store'
read_target:
type: 'settings-store'
Настройки хранения конфигураций
Поскольку некоторые функции были вынесены в отдельные бандлы, их настройки хранения нужно переместить:
- Удалите настройки перед обновлением.
- Снова добавьте их после установки соответствующих бандлов.
Соответствующими конфигурациями являются:
# pimcore_custom_reports:
# config_location:
# custom_reports:
# write_target:
# type: 'settings-store'
# pimcore_web_to_print:
# config_location:
# web_to_print:
# write_target:
# type: 'settings-store'
# pimcore_static_routes:
# config_location:
# staticroutes:
# write_target:
# type: 'settings-store'
Web2Print
Если вы используете Web2Print, установите флаг "Enable Web2Print documents in default documents view" в значение true, чтобы бандл PimcoreWebToPrintBundle установился автоматически. В противном случае установите false.
WYSIWYG-редактор
Добавьте все разрешенные HTML-теги и атрибуты в html_sanitizer, как описано [здесь]](../../../../Pimcore/Documents/Editables/WYSIWYG)
Конфигурация Redis Cache
Если вы используете адаптер Redis для Pimcore\Cache, измените конфигурацию:
framework:
cache:
pools:
pimcore.cache.pool:
#tags: true // эта строка должна быть удалена
public: true
default_lifetime: 31536000 # 1 year
adapter: cache.adapter.redis_tag_aware # используйте это вместо pimcore.cache.adapter.redis_tag_aware
...
Обновление Pimcore через Composer
Обновите Pimcore до версии Pimcore 11 с помощью инструкции composer composer require -W pimcore/pimcore:^11.0 pimcore/admin-ui-classic-bundle.
В зависимости от ваших настроек может потребоваться включить дополнительные зависимости в инструкцию по обновлению и/или очистить файл composer.lock и папку vendor.
После запуска composer некоторые задачи, такие как bin/console assets:install, могут завершиться ошибкой из-за необходимости внесения дополнительных изменений, прежде чем контейнер Symfony сможет быть собран заново. Для получения дополнительной информации смотрите следующий раздел Задачи.
Задачи после обновления
Admin Bundle
Зарегистрируйте admin-ui-classic-bundle в Kernel (и при необходимости адаптируйте сигнатуру метода):
src/Kernel.php
public function registerBundlesToCollection(BundleCollection $collection): void
{
// pimcore bundles
$collection->addBundle(new \Pimcore\Bundle\AdminBundle\PimcoreAdminBundle(), 60);
}
Изменения в коде
- Обновите
config/packages/security.yamlдо последнего формата. В качестве справки используйте security.yaml из skeleton. - Обновите пути к ресурсам: замените
@PimcoreCoreBundle/Resources/config/...на@PimcoreCoreBundle/config/...- особенно в
config/routes.yaml(вам, вероятно, также нужно изменитьrouting.ymlнаrouting.yaml).
- особенно в
При необходимости установите извлеченные пакеты с помощью Composer
Если вам нужны функции, которые теперь вынесены в отдельные пакеты (как PimcoreEcommerceFrameworkBundle или PimcorePersonalizationBundle), установите их через composer.
composer require pimcore/system-info-bundle pimcore/file-explorer-bundle pimcore/personalization-bundle pimcore/google-marketing-bundle pimcore/web-to-print-bundle pimcore/ecommerce-framework-bundle pimcore/newsletter-bundle
Пропускайте пакеты в соответствии с вашими требованиями.
Активируйте извлеченные пакеты в config/bundles.php, если необходимо
Обновите config/bundles.php и добавьте все необходимые извлеченные пакеты в массив:
\Pimcore\Bundle\EcommerceFrameworkBundle\PimcoreEcommerceFrameworkBundle::class => ['all' => true],
\Pimcore\Bundle\PersonalizationBundle\PimcorePersonalizationBundle::class => ['all' => true],
\Pimcore\Bundle\GlossaryBundle\PimcoreGlossaryBundle::class => ['all' => true],
\Pimcore\Bundle\SeoBundle\PimcoreSeoBundle::class => ['all' => true],
\Pimcore\Bundle\SimpleBackendSearchBundle\PimcoreSimpleBackendSearchBundle::class => ['all' => true],
\Pimcore\Bundle\CustomReportsBundle\PimcoreCustomReportsBundle::class => ['all' => true],
\Pimcore\Bundle\GoogleMarketingBundle\PimcoreGoogleMarketingBundle::class => ['all' => true],
\Pimcore\Bundle\ApplicationLoggerBundle\PimcoreApplicationLoggerBundle::class => ['all' => true],
\Pimcore\Bundle\WebToPrintBundle\PimcoreWebToPrintBundle::class => ['all' => true],
\Pimcore\Bundle\TinymceBundle\PimcoreTinymceBundle::class => ['all' => true],
\Pimcore\Bundle\StaticRoutesBundle\PimcoreStaticRoutesBundle::class => ['all' => true],
\Pimcore\Bundle\NewsletterBundle\PimcoreNewsletterBundle::class => ['all' => true],
\Pimcore\Bundle\WordExportBundle\PimcoreWordExportBundle::class => ['all' => true],
\Pimcore\Bundle\XliffBundle\PimcoreXliffBundle::class => ['all' => true],
\Pimcore\Bundle\FileExplorerBundle\PimcoreFileExplorerBundle::class => ['all' => true],
\Pimcore\Bundle\SystemInfoBundle\PimcoreSystemInfoBundle::class => ['all' => true],
Удалите пакеты в соответствии с вашими требованиями.
Настройки хранилища конфигурации - Часть 2
При необходимости повторно активируйте параметры хранилища конфигурации для извлеченных пакетов:
#custom_reports
pimcore_custom_reports:
config_location:
custom_reports:
...
#web_to_print
pimcore_web_to_print:
config_location:
web_to_print:
...
#static_routes
pimcore_static_routes:
config_location:
staticroutes:
...
Миграции
Как только контейнер Symfony сможет собраться, выполните миграции БД:
bin/console doctrine:migrations:migrate
Web2Print
Если вы не используете функциональность Web2Print, то, пожалуйста, обязательно выполните следующие команды и запросы для очистки вашей системы:
bin/console pimcore:documents:cleanup printpage printcontainer
DELETE FROM `users_permission_definitions` WHERE `key` = 'web2print_settings';
UPDATE `users` SET `permissions`=REGEXP_REPLACE(`permissions`, '(?:^|,)web2print_settings(?:$|,)', '') WHERE `permissions` REGEXP '(?:^|,)web2print_settings(?:$|,)';
Рассылки
Если вы не пользуетесь функцией рассылки новостей, пожалуйста, обязательно выполните следующую команду для очистки вашей системы:
bin/console pimcore:documents:cleanup newsletter
Удалите потерянные пользовательские настройки
Поскольку в версии 11 была удалена поддержка facedetect, мы рекомендуем удалить соответствующие пользовательские настройки в базе данных. Вы можете сделать это, выполнив следующие команды:
bin/console pimcore:assets:remove-custom-setting faceCoordinates
bin/console pimcore:assets:remove-custom-setting disableFocalPointDetection
bin/console pimcore:assets:remove-custom-setting disableImageFeatureAutoDetection
Перестройте классы, objectBricks, fieldCollections и customLayouts
Убедитесь, что вы выполнили следующие команды для перестройки классов, objectBricks, fieldCollections и customLayouts:
bin/console doctrine:migration:exec 'Pimcore\Bundle\CoreBundle\Migrations\Version20240708083500'
Дополнительные процедуры очистки
- Удалите
var/config/system.yamlпосле переноса всех настроек.
Конфигурация сервера
- WebDAV: пожалуйста, имейте в виду, что конфигурация nginx изменилась из-за перемещения пути к WebDAV. Пожалуйста, соответствующим образом измените свою конфигурацию, следуя инструкциям в разделе WebDAV на странице "Примечания к обновлению".
Обновите конфигурацию воркеров Symfony Messenger
В версии Pimcore 11 некоторые задачи Symfony Messenger были перенесены в отдельного получателя. Убедитесь, что вы адаптировали конфигурацию Symfony Messenger worker (например, конфигурацию вашего supervisor здесь таким образом, чтобы были задействованы все получатели. Новыми получателями являются:
pimcore_scheduled_taskspimcore_image_optimizepimcore_asset_updatepimcore_search_backend_message
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.