-- optional

ext_tables.php is not always included in the global scope of the frontend context.

This file is only included when

  • a TYPO3 Backend or CLI request is happening
  • or the TYPO3 Frontend is called and a valid backend user is authenticated

This file usually gets included later within the request and after TCA information is loaded, and a backend user is authenticated.

Should not be used for

Should be used for

These are the typical functions that should be placed inside ext_tables.php


Put the following in a file called ext_tables.php in the main directory of your extension. The file does not need to be registered but will be loaded automatically:



use MyVendor\MyExtension\Backend\MyClass;

defined('TYPO3') or die();

// Add your code here

Read why the check for the TYPO3 constant is necessary.

Registering a scheduler task

Scheduler tasks get registered in ext_tables.php as well. Note that the system extension "scheduler" has to be installed for this to work.



use TYPO3\CMS\Scheduler\Task\CachingFrameworkGarbageCollectionAdditionalFieldProvider;
use TYPO3\CMS\Scheduler\Task\CachingFrameworkGarbageCollectionTask;

defined('TYPO3') or die();

$lll = 'LLL:EXT:my_extension/Resources/Private/Language/locallang.xlf:';

// Add caching framework garbage collection task
        [CachingFrameworkGarbageCollectionTask::class] = [
            'extension' => 'my_extension',
            'title' => $lll . 'cachingFrameworkGarbageCollection.name',
            'description' => $lll . 'cachingFrameworkGarbageCollection.description',
            'additionalFields' =>

Registering a backend module

Changed in version 13.0

The method \use TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule() has been removed. Register modules in Modules.php.

Allowing a tables records to be added to Standard pages

Changed in version 13.0

The method ExtensionManagementUtility::allowTableOnStandardPages() has been removed. Use the TCA ctrl option ignorePageTypeRestriction instead.