Pimcore从V6升级到V10的完整指南
前言
Pimcore作为一款强大的开源数字体验平台,从版本6到版本10经历了重大架构升级。本文将详细介绍从Pimcore 6.x升级到10.x的全过程,帮助开发者顺利完成这一重要版本迁移。
系统环境要求变更
在开始升级前,必须确保系统环境满足新版本要求:
- PHP版本:≥8.0且<8.2(Pimcore 6仅支持PHP<8.0)
- Apache版本:≥2.4
- Composer版本:≥2.0
- 数据库要求:
- MariaDB:≥10.3
- MySQL:≥8.0
升级前的准备工作
- 版本检查:如果当前版本在6.0.0到6.8.x之间,需先升级到6.9.x
- 扩展兼容性:检查所有使用的Bundle是否兼容Pimcore 10
- 功能替代方案:
- REST Webservice需迁移到Datahub
- PHP模板引擎需转为Twig模板
- 命名策略检查:执行
bin/console debug:config pimcore documents.editables.naming_strategy
,若返回legacy
,需先在Pimcore 6中完成迁移
关键变更点(需在PHP<8.0环境下完成)
项目结构调整
按照Symfony Flex规范重构项目目录结构:
- 配置文件从
app/config/*.yml
迁移到config/*.yaml
- 模板文件从
app/Resources/views
迁移到templates
- 内核文件从
app/AppKernel.php
移动到src/Kernel.php
web/
目录更名为public/
web/app.php
更名为public/index.php
控制器引用更新
使用命令迁移控制器引用格式:
./bin/console migration:controller-reference
版本数据迁移
文档版本:
pimcore:documents:migrate-elements
数据对象版本: 需执行自定义迁移脚本,将旧命名空间AppBundle\\..
更新为App\\..
数据库配置更新
确保doctrine.yml
包含以下配置:
doctrine:
dbal:
connections:
default:
mapping_types:
enum: string
bit: boolean
Composer配置清理
- 移除不再需要的包:
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
- 更新自动加载配置:
"autoload": {
"psr-4": {
"App\\": ["src/"],
"AppBundle\\": ["src/"],
"Pimcore\\Model\\DataObject\\": "var/classes/DataObject"
}
}
模板引擎迁移
Pimcore 10仅支持Twig模板,需将所有PHP模板转换为Twig格式。企业版用户可安装pimcore/php-templating-engine-bundle
保留PHP模板支持。
系统配置调整
- 移除
swiftmailer
配置 - 将
cache
键重命名为full_page_cache
- 移除
webservice
配置
安全配置合并
将所有安全配置合并到config/packages/security.yaml
文件中,不再支持多文件合并。
数据清理
- 清空临时目录:
rm -r var/tmp
rm -r public/var/tmp
- 清空回收站:
rm -r var/recyclebin
TRUNCATE TABLE recyclebin;
- 解压版本数据:
gzip -d -r var/versions/
资源文件迁移
- 用户图片迁移:
mkdir var/admin
mv var/user-image var/admin/user-image
- 自定义Logo迁移:
mkdir var/admin
mv var/config/custom-logo.* var/admin/custom-logo.image
执行升级(切换至PHP≥8.0环境)
- 确保Composer版本≥2.0
- 切换PHP版本到≥8.0且<8.2
- 执行Composer更新:
COMPOSER_MEMORY_LIMIT=-1 composer update
升级后验证
- 检查迁移是否完整执行:
./bin/console doctrine:migrations:up-to-date --prefix=Pimcore\\Bundle\\CoreBundle
- 如有未执行的迁移:
./bin/console doctrine:migrations:migrate --prefix=Pimcore\\Bundle\\CoreBundle
总结
从Pimcore 6升级到10是一个系统性的工程,涉及PHP版本变更、目录结构调整、模板引擎替换等多个方面。建议在测试环境充分验证后再进行生产环境升级,确保业务连续性。升级完成后,您将能够享受Pimcore 10带来的性能提升和新特性支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考