TYPO3从v9升级至v10时出现CacheManager懒加载报错如何解决?
报错根本原因
TYPO3 10.0版本对扩展初始化流程做了强校验限制,ext_localconf.php 属于扩展加载的早期阶段,此时TYPO3核心的依赖注入容器、TYPO3\CMS\Core\Cache\CacheManager 等核心服务还未完成完整初始化,旧版本代码如果直接在ext_localconf.php中手动实例化CacheManager、或者通过DI容器直接获取CacheManager实例,就会触发该逻辑异常,这是TYPO3 10.x为了规范加载流程新增的强制限制。
处理方案
- 排查所有自定义扩展、第三方扩展的
ext_localconf.php文件,删除所有直接实例化/获取CacheManager的代码 - 业务逻辑中需要用到CacheManager的,统一在对应业务类的构造函数或者inject方法中声明依赖,由TYPO3的DI容器在类实际调用时懒加载注入
- 如果需要在
ext_localconf.php阶段配置自定义缓存,仅修改全局缓存配置项即可,不要直接操作CacheManager实例,参考写法:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['your_custom_cache_identifier'] = [ 'frontend' => \TYPO3\CMS\Core\Cache\Frontend\VariableFrontend::class, 'backend' => \TYPO3\CMS\Core\Cache\Backend\FileBackend::class, 'options' => [ 'defaultLifetime' => 86400, ], ];
- 如果是第三方扩展触发的报错,优先将对应扩展升级到支持TYPO3 10.x的兼容版本,无兼容版本则按上述规则修改该扩展的
ext_localconf.php代码 - 所有修改完成后清空TYPO3全部缓存,重新执行升级流程即可
内容的提问来源于stack exchange,提问作者Haroun
相关产品推荐
相关产品推荐

