Обновление Pimcore с версии 6.x до версии 10
Изменения в системных требованиях
- PHP >=8.0 <8.2
- Apache >= 2.4
- Composer >= 2.0
Так как Pimcore 6.x работает только на PHP < 8.0, а Pimcore 10 требует PHP >=8.0 <8.2, вам потребуется переключить версию PHP в процессе обновления.
Изменения в требованиях к базе данных
- MariaDB >= 10.3
- MySQL >= 8.0
Подготовительные работы
- Если у вас версия от 6.0.0 до 6.8.x, сначала обновитесь до 6.9.x, и только после этого приступайте к переходу на версию 10.
- Проверьте, поддерживают ли все используемые вами сторонние бандлы Pimcore X.
- Если вы используете REST Webservices или движок шаблонов PHP, перейдите на Datahub и шаблоны Twig или рассмотрите возможность использования нашего [предложения LTS] (https://pimcore.com/en/services/lts), которое возвращает эту функциональность в виде дополнительных коммерческих пакетов.
- В случае, если
bin/console debug:config pimcore documents.editables.naming_strategyвозвращает значениеlegacy, вы не адаптировались к новой редактируемой стратегии именования, начиная с версии Pimcore 5. Пожалуйста, выполните миграцию в Pimcore 6 перед обновлением до Pimcore X, в противном случае все редактируемые вами документы будут потеряны. Следуйте этому руководству
ВАЖНЫЕ ИЗМЕНЕНИЯ, КОТОРЫЕ НЕОБХОДИМО ВНЕСТИ ПЕРЕД ОБНОВЛЕНИЕМ! (ДЛЯ ИСПОЛЬЗОВАНИЯ С PHP < 8.0)
Обновление структуры папок
Измените структуру папок проекта в соответствии с рекомендациями Symfony Flex. Смотрите демо изменений здесь
Перенесите устаревшие конфигурации модулей/контроллеров/действий на новые ссылки на контроллеры
Вы можете использовать ./bin/console migration:controller-reference для переноса существующих документов, статических маршрутов и типов документов в новые ссылки на контроллеры в формате: AppBundle\Controller\FooController::BarAction.
Миграция версий для совместимости с Pimcore X
Документы:
Если нужно сохранить историю версий, выполните команду pimcore:documents:migrate-elements для миграции устаревшего свойства elements в editables (актуально для версий, созданных до 6.7).
Объекты данных:
Пожалуйста, адаптируйте этот скрипт миграции и выполните переход к новым пространствам имен классов в ваших файлах старой версии, если вы хотите перенести эти файлы в Pimcore X, например, AppBundle\\.. в App\\...
Убедитесь, что конфигурация вашей базы данных включает следующие определения:
doctrine:
dbal:
connections:
default:
mapping_types:
enum: string
bit: boolean
Очистка composer.json
composer remove --no-update wikimedia/composer-merge-plugin doctrine/migrations php-http/guzzle6-adapter
composer require --no-update php-http/guzzle7-adapter:^0.1.1
Обновите composer.json в соответствии с skeleton
Удалите
"autoload": {
"classmap": [
"app/AppKernel.php"
]
}
из composer.json.
Добавьте "AppBundle\\": ["src/"], в блок autoload, если вы хотите продолжать использовать AppBundle вместо App.
"autoload": {
"psr-4": {
"App\\": ["src/"],
"AppBundle\\": ["src/"],
"Pimcore\\Model\\DataObject\\": "var/classes/DataObject",
... возможно, какие-то другие элементы
}
},
(В качестве альтернативы вы можете изменить пространства имен всех классов в папке app/ на App\..., где раньше было AppBundle\....)
Изменения файлов и папок
- Переместите конфигурации из
app/config/*.ymlвconfig/*.yaml - Переместите шаблоны из
app/Resources/viewsвtemplatesи пакеты шаблонов изapp/Resources/XYZBundle/viewsвtemplates/bundles/XYZBundle. - Переместите
app/AppKernel.phpвsrc/Kernel.phpи отредактируйте его так, чтобы в нем былоnamespace App;и имя классаKernel(добавьте псевдоним к родительскому классу для предотвращения коллизии имен классов, напримерuse Pimcore\Kernel as PimcoreKernel;иextends PimcoreKernel). - Переименуйте
web/вpublic/иweb/app.phpвpublic/index.php - Переименуйте
config/routing.ymlвconfig/routes.yaml - Переместите настройки, относящиеся к вашей среде, в
config/packages/$ENV/*.yaml(например, config.prod.yml) - Проверьте структуру папок с помощью Skeleton Project
Несколько помощников для ваших изменений
mv app/config/ config/
mv web/ public/
mv app/Resources/views/ templates/
mv src/AppBundle/* src/
mv public/app.php public/index.php
mv app/AppKernel.php src/Kernel.php
Добавьте файл окружения .env
Добавьте файл .env в корневой каталог проекта, если он еще не существует.
Перенос шаблонов PHP в Twig
Поскольку Pimcore X поддерживает только Symfony 5, в котором была отключена поддержка шаблонов PHP, необходимо обновить ваши шаблоны PHP до Twig.
Если вы используете enterprise edition, то по-прежнему можно поддерживать шаблоны PHP, установив pimcore/php-templating-engine-bundle.
Вы можете использовать регулярное выражение для замены строк в ваших файлах шаблонов. Например, перепишите {% extends ':Layout:default.html.twig' %} на {% extends 'Layout/default.html.twig' %}.
совет
Лучше замените строки вручную в вашей среде IDE, а не в пакетном режиме.
Адаптация системных настроек
В связи с изменением конфигурации Pimcore, согласно которому в узле pimcore больше не разрешены дополнительные ключи, требуется адаптировать системные настройки в соответствии с system.template.yaml (путь по умолчанию <Pimcore root>/var/config/system.yaml) и config.yaml (путь по умолчанию после адаптации структуры папок <Pimcore root>/config/config.yaml)
На что следует обратить внимание:
- Удалить конфигурацию
swiftmailer - Переименовать ключ
cacheвfull_page_cache - Удалить конфигурацию
webservice
Адаптация конфигурации безопасности
Больше невозможно объединять конфигурации безопасности из нескольких мест, включая бандлы. Вместо этого вы должны переместить их в один конфигурационный файл, например, config/packages/security.yaml. Проверьте bin/console debug:config security firewalls, чтобы найти конфигурации брандмауэра, которые необходимо перенести. Пожалуйста, адаптируйте config/packages/security.yaml из skeleton и объедините свои собственные конфигурации брандмауэра в один файл.
Очистка каталогов /tmp
rm -r var/tmp
rm -r public/var/tmp
Очистка корзины
Перенос элементов из корзины не поддерживается. Чтобы начать работу с Pimcore 10 без проблем, мы рекомендуем очистить ее перед переносом.
rm -r var/recyclebin
TRUNCATE TABLE recyclebin;
Распаковка архивированных версий данных
Pimcore X больше не поддерживает сжатые версии данных, выполните следующую команду, чтобы рекурсивно
распаковать их:
gzip -d -r var/versions/
Перемещение пользовательских изображений
Расположение пользовательских изображений по умолчанию изменилось, просто переместите содержимое в новое место:
mkdir var/admin
mv var/user-image var/admin/user-image
Перемещение пользовательского логотипа
Расположение пользовательского логотипа изменилось, просто переместите его на новое место:
mkdir var/admin
mv var/config/custom-logo.* var/admin/custom-logo.image
Обновление .htaccess или конфигурации Nginx
ПЕРЕКЛЮЧИТЕ COMPOSER И ВЕРСИЮ PHP И ВЫПОЛНИТЕ ОБНОВЛЕНИЕ!
- Убедитесь, что Composer обновлен до версии >= 2.0
- Переключите версию PHP на PHP >=8.0 <8.2
- Запустить обновление composer (
COMPOSER_MEMORY_LIMIT=-1 composer update)
ИЗМЕНЕНИЯ, КОТОРЫЕ НЕОБХОДИМО ВНЕСТИ ПОСЛЕ ОБНОВЛЕНИЯ! (ДЛЯ ИСПОЛЬЗОВАНИЯ С PHP >=8.0 <8.2)
Проверка выполнения миграций
По умолчанию Composer update запускает миграции Pimcore автоматически, однако лучше проверить, все ли миграции выполнены для плавного перехода.
Для проверки запустите команду: ./bin/console doctrine:migrations:up-to-date --prefix=Pimcore\\Bundle\\CoreBundle.
Если вы увидите сообщение [ERROR] Out-of-date! x migrations are available to execute., выполните команду: ./bin/console doctrine:migrations:migrate --prefix=Pimcore\\Bundle\\CoreBundle.
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.