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

安装TYPO3扩展时提示“扩展不可用”问题求助(Composer开发)

TYPO3 9.5自定义扩展安装错误:“Extension myExtensionName is not available” 解决指南

问题描述

我是TYPO3新手,已成功安装TYPO3 9.5版本。尝试开发自定义扩展时,先后使用TYPO3 Kickstart和sitepackagebuilder.com生成扩展,但安装时持续提示“Extension myExtensionName is not available”。扩展存放于typo3conf/ext/目录下,希望通过Composer开发扩展。

附原配置文件:

原ext_emconf.php

<?php
$EM_CONF[$_EXTKEY] = [
    'title' => 'My extension',
    'description' => 'Typo3 Command for Scheduler',
    'category' => 'plugin',
    "uploadfolder" => 0,
    "clearcacheonload" => true,
    'author_email' => '',
    'state' => 'alpha',
    'createDirs' => '',
    'clearCacheOnLoad' => 1,
    'version' => '1.0.0',
    'autoload' => [
        'psr-4' => [
      "Foo\Bar\": "Classes/"
        ]
    ],
    'constraints' => [
        'depends' => [
            'typo3' => '9.5.0-9.5.99',
        ],
        'conflicts' => [],
        'suggests' => [],
    ],
];

原composer.json

{
  "name": "foo/my_extension",
  "description": "Typo3 Command for Scheduler",
  "type": "typo3-cms-extension",
  "version": "9.5.0",
  "prefer-stable": true,
  "keywords": [
    "TYPO3",
    "CMS",
    "Extension"
  ],
  "homepage": "https://example.com",
  "license": "MIT",
  "authors": [
    {
      "name": "example",
      "email": "test@example.com"
    }
  ],
  "require": {
    "php": ">=7.2.0",
    "typo3/cms-core": "^9.5 || 10.2.0 - 10.4.99",
    "typo3/cms-backend": "~8.7.10 || ~9.5.0",
    "typo3/cms-extbase": "~8.7.10 || ~9.5.0",
    "typo3/cms-scheduler": "~8.7.10 || ~9.5.0"
  },
  "autoload": {
    "psr-4": {
      "Foo\Bar\": "Classes/"
    }
  },
  "replace": {
    "foo/my_extension": "self.version"
  }
}

解决步骤

1. 确保扩展目录与配置一致

  • typo3conf/ext/下的扩展目录名必须和composer.json中name字段的后半部分一致(比如foo/my_extension对应目录名my_extension),同时匹配ext_emconf.php中的$_EXTKEY(即目录名)。
  • 检查composer.json的replace字段键名,必须和扩展包名完全一致。

2. 修复配置文件语法错误

ext_emconf.php修正点:

  • PSR-4命名空间反斜杠需转义:"Foo\Bar\"改为'Foo\\Bar\\'
  • 删除重复的clearCacheOnLoad字段,保留'clearcacheonload' => true即可

composer.json修正点:

  • PSR-4命名空间反斜杠转义:"Foo\Bar\"改为"Foo\\Bar\\"
  • replace字段中self.version改为${self.version},否则Composer无法识别版本变量
  • 统一版本号:将version改为1.0.0,与ext_emconf.php保持一致
  • 简化依赖约束:针对TYPO3 9.5,移除8.7版本兼容,精简require字段

3. 用Composer加载本地扩展

在TYPO3根目录的composer.json中添加本地扩展仓库:

"repositories": [
    {
        "type": "path",
        "url": "typo3conf/ext/my_extension"
    }
]

执行命令安装扩展:

composer require foo/my_extension:@dev

4. 清除缓存并重新扫描扩展

执行缓存清除命令:

./vendor/bin/typo3 cache:flush

进入后台扩展管理模块,点击“重新扫描可用扩展”按钮。

5. 检查文件权限

确保扩展目录及文件的权限正确,Web服务器用户(如www-data)拥有读取权限。

修正后的配置文件示例

修正后的ext_emconf.php

<?php
$EM_CONF[$_EXTKEY] = [
    'title' => 'My extension',
    'description' => 'Typo3 Command for Scheduler',
    'category' => 'plugin',
    'uploadfolder' => 0,
    'clearcacheonload' => true,
    'author_email' => '',
    'state' => 'alpha',
    'createDirs' => '',
    'version' => '1.0.0',
    'autoload' => [
        'psr-4' => [
            'Foo\\Bar\\' => 'Classes/'
        ]
    ],
    'constraints' => [
        'depends' => [
            'typo3' => '9.5.0-9.5.99',
        ],
        'conflicts' => [],
        'suggests' => [],
    ],
];

修正后的composer.json

{
  "name": "foo/my_extension",
  "description": "Typo3 Command for Scheduler",
  "type": "typo3-cms-extension",
  "version": "1.0.0",
  "prefer-stable": true,
  "keywords": [
    "TYPO3",
    "CMS",
    "Extension"
  ],
  "homepage": "https://example.com",
  "license": "MIT",
  "authors": [
    {
      "name": "example",
      "email": "test@example.com"
    }
  ],
  "require": {
    "php": ">=7.2.0",
    "typo3/cms-core": "^9.5",
    "typo3/cms-backend": "^9.5",
    "typo3/cms-extbase": "^9.5",
    "typo3/cms-scheduler": "^9.5"
  },
  "autoload": {
    "psr-4": {
      "Foo\\Bar\\": "Classes/"
    }
  },
  "replace": {
    "foo/my_extension": "${self.version}"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:37:55