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/
andsystem/ services. php 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/
in non-Composer installations. The site configuration configured in the Site Management > Sites backend module is written to this file.typo3conf/ sites
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/
Typo Script/ - 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
, Global Configuration (['TCA'] GLOBALS
), User Settings (['TYPO3_ CONF_ VARS'] $GLOBALS
, etc.['TYPO3_ USER_ SETTINGS']
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.
Tip
TSconfig can also be used to override the table configuration array TCA, which is always defined globally, on a per-site or per-page level.
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.
See also
For getting started:
- TypoScript guide – Introduction to TypoScript
- TYPO3 site package tutorial – Create a site theme using TypoScript and Fluid
The complete reference:
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/
and can be overridden viasystem/ settings. php config/
.system/ additional. php - Extension Configuration:
- A subset of
TYPO3_
, located inCONF_ VARS TYPO3_
. Used for extension-specific settings. Editable in the backend. Use the API.CONF_ VARS ['EXTENSIONS'] - Feature toggle API:
- Enable or disable TYPO3 features via
TYPO3_
. Toggle in the backend with admin rights. Use the Feature Toggle API.CONF_ VARS ['SYS'] ['features'] - User settings:
- Stored in
$GLOBALS
, they define backend user preferences.['TYPO3_ USER_ SETTINGS']
Hint
View configurations in the backend under System > Configuration
(read-only) or use a debugger. This requires the lowlevel
system extension.
Only system maintainers can change
TYPO3_
, extension settings,
and feature toggles in the backend. TCA and settings for the
Logging and Caching
frameworks must be edited manually in
config/
.
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:
- Site config is stored in
config/
and editable via the Sites backend module or directly in the file.sites/<identifier>/ config. yaml - Routing - "Speaking URLs" in TYPO3 is also defined in the same YAML file.
- form provides frontend forms via YAML.
- rte_ckeditor uses YAML to configure the backend rich text editor.
<extension>/Configuration/Services.yaml
configures Event listeners and Dependency injection.
YAML files can be loaded using the YamlFileLoader.