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

Обновление 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'

Настройки хранения конфигураций

Поскольку некоторые функции были вынесены в отдельные бандлы, их настройки хранения нужно переместить:

  1. Удалите настройки перед обновлением.
  2. Снова добавьте их после установки соответствующих бандлов.

Соответствующими конфигурациями являются:

# 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_tasks
  • pimcore_image_optimize
  • pimcore_asset_update
  • pimcore_search_backend_message

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