You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级TYPO3至v12后执行typo3 extension:setup报错求助

TYPO3 v11升级v12:ProviderConfigurationLoader构造函数参数异常解决方案

问题原因

TYPO3 v12对依赖注入(DI)机制做了严格规范,TYPO3\CMS\Core\ExpressionLanguage\ProviderConfigurationLoader类必须通过DI容器注入所需的3个参数,不能再用GeneralUtility::makeInstance()无参数实例化。这个问题通常是自定义扩展或第三方扩展未适配v12的DI变更,仍在使用旧的实例化方式导致的。

排查步骤

  • 查看完整报错堆栈,定位是哪个扩展的代码调用了GeneralUtility::makeInstance(ProviderConfigurationLoader::class)
  • 检查所有自定义扩展代码,搜索是否存在直接实例化ProviderConfigurationLoader的逻辑
  • 排查第三方扩展:确认使用的扩展是否已发布适配TYPO3 v12的版本,尤其是涉及表达式语言配置的扩展

修复方案

1. 修复自定义扩展代码

如果是自有扩展的问题,将直接实例化逻辑替换为依赖注入:

use TYPO3\CMS\Core\ExpressionLanguage\ProviderConfigurationLoader;

class YourCustomClass {
    public function __construct(
        protected ProviderConfigurationLoader $providerConfigurationLoader
    ) {}

    // 后续直接通过$this->providerConfigurationLoader调用方法即可
}

确保扩展的Services.yaml(如果存在)配置正确,TYPO3 v12默认支持构造函数自动注入,无需额外配置。

2. 更新或禁用第三方扩展

  • 运行ddev composer show <扩展包名>查看当前版本,确认是否有v12兼容版本
  • 若有兼容版本,更新composer.json中的版本约束后执行ddev composer update <扩展包名>
  • 若无兼容版本,可暂时禁用该扩展(通过config/system/additional.php或后台扩展管理),待兼容版本发布后再启用

3. 彻底清除缓存

除TYPO3 CLI清除缓存外,执行以下命令确保缓存完全清理:

ddev exec rm -rf var/cache/
ddev exec rm -rf var/transient/
ddev composer dump-autoload

额外检查

  • 确认composer.json中TYPO3核心版本约束正确,所有依赖扩展均适配v12
  • 对比同事本地环境,检查是否有未同步的配置文件(如config/system/settings.php、Services.yaml等)

内容的提问来源于stack exchange,提问作者Jonathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 13:32:08