Overview of configuration files and syntax

This page introduces TYPO3’s configuration files, syntax, and available configuration methods. For detailed information, refer to the relevant chapters or references.

TYPO3 is highly configurable—settings can be adjusted through the backend, extensions, or configuration files, and extended as needed.

Configuration overview: files

Global files

config/system/settings.php:
Contains the persisted $GLOBALS['TYPO3_CONF_VARS'] array. Settings configured in the backend by system maintainers in Admin Tools > Settings > Configure Installation-Wide Options are written to this file.
config/system/additional.php:
Can be used to override settings defined in config/system/settings.php
config/system/services.php and config/system/services.yaml:
These two files can be used to set up a global service configuration for a project that can be used in several project-specific extensions. This is explained in detail in the Dependency Injection: Installation-wide configuration section.
config/sites/<site>/config.yaml
This file is located in webroot/typo3conf/sites in non-Composer installations. The site configuration configured in the Site Management > Sites backend module is written to this file.

Extension files

composer.json
Composer configuration, required in Composer-based installations
ext_emconf.php
Extension declaration, required in legacy installations
ext_tables.php
Various configuration. Is used only for backend or CLI requests or when a valid BE user is authenticated.
ext_localconf.php
Various configuration. Is always included, whether frontend or backend.
ext_conf_template.txt
Define the "Extension Configuration" settings that can be changed in the backend.
Configuration/Services.yaml
Can be used to configure Console commands, Dashboard widgets, Event listeners and Dependency injection.
Configuration/TCA
TCA configuration.
Configuration/TSconfig/
TSconfig.
Configuration/TypoScript/
TypoScript configuration.

Configuration languages

TYPO3 uses several languages for configuration:

  • TypoScript syntax is used for frontend TypoScript and backend TypoScript (also called TSconfig). TypoScript has a unique syntax, shared by TypoScript and TSconfig. While the syntax is the same, their semantics differ.
  • Yaml is the configuration language of choice for newer TYPO3 system extensions like rte_ckeditor, form and the sites module. It has partly replaced TypoScript and TSconfig as configuration languages.
  • XML is used in FlexForms.
  • PHP is used for the $GLOBALS array which includes TCA ( $GLOBALS['TCA'] , Global Configuration ( GLOBALS['TYPO3_CONF_VARS']), User Settings ( $GLOBALS['TYPO3_USER_SETTINGS'], etc.

Configuration methods

Backend TypoScript (TSconfig)

TSconfig configures backend behavior in TYPO3, such as enabling views or customizing editing interfaces—without writing PHP. It can be applied at the page level (Page TSconfig) or to users and groups (User TSconfig).

TSconfig shares the same syntax as Frontend TypoScript, detailed in TypoScript syntax, but uses entirely different properties.

For full usage, API details, and load order, refer to:

Primarily used by integrators, TSconfig helps tailor the backend experience for users.

Frontend TypoScript

TypoScript (or TypoScript Templating) controls frontend rendering in TYPO3. It uses the syntax described in TypoScript Explained.

While once central to frontend output, much of its role has been replaced by Fluid. Today, TypoScript is often used to configure plugins, set global options, or prepare data for Fluid templates.

Still, the TypoScript Reference remains essential for integrators.

Global configuration arrays in PHP

Global Configuration Arrays in PHP

TYPO3 stores global configuration in the $GLOBALS PHP array. Key entries:

$GLOBALS['TCA']:
Defines how backend forms, fields, and data handling behave. It’s essential for developers and integrators. Full reference: TCA Reference. See also: Extending the TCA array.
$GLOBALS['TYPO3_CONF_VARS']:
Stores system-wide settings. Most can be changed in Admin Tools > Settings > Global Configuration. Values are saved in config/system/settings.php and can be overridden via config/system/additional.php.
Extension Configuration:
A subset of TYPO3_CONF_VARS, located in TYPO3_CONF_VARS['EXTENSIONS']. Used for extension-specific settings. Editable in the backend. Use the API.
Feature toggle API:
Enable or disable TYPO3 features via TYPO3_CONF_VARS['SYS']['features']. Toggle in the backend with admin rights. Use the Feature Toggle API.
User settings:
Stored in $GLOBALS['TYPO3_USER_SETTINGS'], they define backend user preferences.

Only system maintainers can change TYPO3_CONF_VARS, extension settings, and feature toggles in the backend. TCA and settings for the Logging and Caching frameworks must be edited manually in config/system/additional.php.

FlexForm

FlexForms are used to define options for plugins and content elements. They allow each element to be configured individually.

Values are editable in the backend when editing the content element. The schema is defined by the providing extension.

YAML

Several system extensions use YAML for configuration:

YAML files can be loaded using the YamlFileLoader.