SYS - System configuration

The following configuration variables can be used for system wide configurations.

fileCreateMask

$GLOBALS['TYPO3_CONF_VARS']['SYS']['fileCreateMask']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

0664

File mode mask for Unix file systems (when files are uploaded/created).

folderCreateMask

$GLOBALS['TYPO3_CONF_VARS']['SYS']['folderCreateMask']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

2775

As above, but for folders.

createGroup

$GLOBALS['TYPO3_CONF_VARS']['SYS']['createGroup']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

''

Group for newly created files and folders (Unix only). Group ownership can be changed on Unix file systems (see above). Set this if you want to change the group ownership of created files/folders to a specific group.

This makes sense in all cases where the webserver is running with a different user/group as you do. Create a new group on your system and add you and the webserver user to the group. Now you can safely set the last bit in fileCreateMask/folderCreateMask to 0 (for example 770). Important: The user who is running your webserver needs to be a member of the group you specify here! Otherwise you might get some error messages.

sitename

$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

'TYPO3'

Name of the base-site.

defaultScheme

New in version 12.0

The setting defaultScheme was added in TYPO3 v12 to make it possible to configure the default URI scheme when links are created by the Core. Previously, 'http' was always used.

$GLOBALS['TYPO3_CONF_VARS']['SYS']['defaultScheme']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

'http'

Set the default URI scheme. This is used within links if no scheme is given. One can set this to 'https' if this should be used by default.

encryptionKey

$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

''

This is a "salt" used for various kinds of encryption, CRC checksums and validations. You can enter any rubbish string here but try to keep it secret. You should notice that a change to this value might invalidate temporary information, URLs etc. At least, clear all cache if you change this so any such information can be rebuilt with the new key.

cookieDomain

$GLOBALS['TYPO3_CONF_VARS']['SYS']['cookieDomain']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

''

Restricts the domain name for FE and BE session cookies. When setting the value to ".example.org" (replace example.org with your domain!), login sessions will be shared across subdomains. Alternatively, if you have more than one domain with sub-domains, you can set the value to a regular expression to match against the domain of the HTTP request.

The result of the match is used as the domain for the cookie. for example : php:/\.(example1|example2)\.com$/ or /\.(example1\.com)|(example2\.net)$/. Separate domains for FE and BE can be set using $TYPO3_CONF_VARS[FE][cookieDomain] and $TYPO3_CONF_VARS[BE][cookieDomain] respectively.

trustedHostsPattern

$GLOBALS['TYPO3_CONF_VARS']['SYS']['trustedHostsPattern']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

'SERVER_NAME'

Regular expression pattern that matches all allowed hostnames (including their ports) of this TYPO3 installation, or the string SERVER_NAME (default).

The default value SERVER_NAME checks if the HTTP Host header equals the SERVER_NAME and SERVER_PORT. This is secure in correctly configured hosting environments and does not need further configuration. If you cannot change your hosting environment, you can enter a regular expression here.

Examples:

.*\.example\.org matches all hosts that end with .example.org with all corresponding subdomains.

.*\.example\.(org|com) matches all hostnames with subdomains from .example.org and .example.com.

Be aware that HTTP Host header may also contain a port. If your installation

runs on a specific port, you need to explicitly allow this in your pattern,

for example example\.org:88 allows only example.org:88, notexample.org. To disable this check completely (not recommended because it is insecure) you can use .* as pattern.

Have also a look into the security guidelines.

devIPmask

$GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

'127.0.0.1,::1'

Defines a list of IP addresses which will allow development output to display. The debug() function will use this as a filter. See the function \TYPO3\CMS\Core\Utility\GeneralUtilitycmpIP() for details on syntax. Setting this to blank value will deny all. Setting to "*" will allow all.

Have also a look into the security guidelines.

ddmmyy

$GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

'd-m-y'

Format of Day-Month-Year - see PHP-function date()

hhmm

$GLOBALS['TYPO3_CONF_VARS']['SYS']['hhmm']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

'H:i'

Format of Hours-Minutes - see PHP-function date()

loginCopyrightWarrantyProvider

$GLOBALS['TYPO3_CONF_VARS']['SYS']['loginCopyrightWarrantyProvider']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

''

If you provide warranty for TYPO3 to your customers insert you (company) name here. It will appear in the login-dialog as the warranty provider. (You must also set URL below).

loginCopyrightWarrantyURL

$GLOBALS['TYPO3_CONF_VARS']['SYS']['loginCopyrightWarrantyURL']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

''

Add the URL where you explain the extend of the warranty you provide. This URL is displayed in the login dialog as the place where people can learn more about the conditions of your warranty. Must be set (more than 10 chars) in addition with the loginCopyrightWarrantyProvider message.

textfile_ext

$GLOBALS['TYPO3_CONF_VARS']['SYS']['textfile_ext']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

'txt,ts,typoscript,html,htm,css,tmpl,js,sql,xml,csv,xlf,yaml,yml'

Text file extensions. Those that can be edited. Executable PHP files may not be editable if disallowed!

mediafile_ext

$GLOBALS['TYPO3_CONF_VARS']['SYS']['mediafile_ext']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

'gif,jpg,jpeg,bmp,png,pdf,svg,ai,mp3,wav,mp4,ogg,flac,opus,webm,youtube,vimeo'

Commalist of file extensions perceived as media files by TYPO3. Must be written in lower case with no spaces between.

binPath

$GLOBALS['TYPO3_CONF_VARS']['SYS']['binPath']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

''

List of absolute paths where external programs should be searched for. for example /usr/local/webbin/,/home/xyz/bin/. (ImageMagick path have to be configured separately)

binSetup

$GLOBALS['TYPO3_CONF_VARS']['SYS']['binSetup']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

multiline

Default

''

List of programs (separated by newline or comma). By default programs will be searched in default paths and the special paths defined by binPath. When PHP has openbasedir enabled, the programs can not be found and have to be configured here.

Example: perl=/usr/bin/perl,unzip=/usr/local/bin/unzip

setMemoryLimit

$GLOBALS['TYPO3_CONF_VARS']['SYS']['setMemoryLimit']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

int

Default

Memory limit in MB: If more than 16, TYPO3 will try to use ini_set() to set the memory limit of PHP to the value. This works only if the function ini_set() is not disabled by your sysadmin.

phpTimeZone

$GLOBALS['TYPO3_CONF_VARS']['SYS']['phpTimeZone']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

''

Timezone to force for all date() and mktime() functions. A list of supported values can be found at php.net.

If blank, a valid fallback will be searched for by PHP (php.inis date.timezone setting, server defaults, etc); and if no fallback is found, the value of "UTC" is used instead.

UTF8filesystem

$GLOBALS['TYPO3_CONF_VARS']['SYS']['UTF8filesystem']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

bool

Default

true

Changed in version 12.0

Before TYPO3 v12 the default value for new installations was always set to false. However, because almost every file system now supports UTF-8 the new default value is set to true.

If set to true, then TYPO3 uses UTF-8 to store file names. This allows for accented latin letters as well as any other non-latin characters like Cyrillic and Chinese.

If set to false, any file that contains characters like umlauts, or if the file name consists only of "special" characters such as Japanese, then the file will be renamed to something "safe" when uploaded in the backend.

systemLocale

$GLOBALS['TYPO3_CONF_VARS']['SYS']['systemLocale']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

''

Locale used for certain system related functions, for example escaping shell commands. If problems with filenames containing special characters occur, the value of this option is probably wrong. See php function setlocale().

reverseProxyIP

$GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxyIP']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

list

Default

''

List of IP addresses. If TYPO3 is behind one or more (intransparent) reverse proxies the IP addresses must be added here.

reverseProxyHeaderMultiValue

$GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxyHeaderMultiValue']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

allowedValues
none
Do not evaluate the reverse proxy header
first
Use the first IP address in the proxy header
last
Use the last IP address in the proxy header
Default

'none'

Defines which values of a proxy header (for example HTTP_X_FORWARDED_FOR) to use, if more than one is found.

reverseProxyPrefix

$GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxyPrefix']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

''

Optional prefix to be added to the internal URL (SCRIPT_NAME and REQUEST_URI).

Example: When proxying external.example.org to internal.example.org/prefix this has to be set to prefix

reverseProxySSL

$GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxySSL']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

''

* or a list of IP addresses of proxies that use SSL (https) for the connection to the client, but an unencrypted connection (http) to the server. If php:* all proxies defined in [SYS][reverseProxyIP] use SSL.

reverseProxyPrefixSSL

$GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxyPrefixSSL']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

text

Default

''

Prefix to be added to the internal URL (SCRIPT_NAME and REQUEST_URI) when accessing the server via an SSL proxy. This setting overrides [SYS][reverseProxyPrefix].

displayErrors

$GLOBALS['TYPO3_CONF_VARS']['SYS']['displayErrors']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

int

Default

-1

allowedValues
-1
TYPO3 does not touch the PHP setting. If [SYS][devIPmask] matches the users IP address, the configured [SYS][debugExceptionHandler] is used instead of the [SYS][productionExceptionHandler] to handle exceptions.
0
Live: Do not display any PHP error message. Sets display_errors=0. Overrides the value of [SYS][exceptionalErrors] and sets it to 0 (= no errors are turned into exceptions). The configured [SYS][productionExceptionHandler] is used as exception handler.
1
Debug: Display error messages with the registered [SYS][errorHandler]. Sets display_errors=1. The configured [SYS][debugExceptionHandler] is used as exception handler.

Configures whether PHP errors or exceptions should be displayed, effectively setting the PHP option display_errors during runtime.

Have also a look into the security guidelines.

productionExceptionHandler

$GLOBALS['TYPO3_CONF_VARS']['SYS']['productionExceptionHandler']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

phpClass

Default

\TYPO3\CMS\Core\Error\ProductionExceptionHandler::class

Classname to handle exceptions that might happen in the TYPO3-code. Leave this empty to disable exception handling. The default exception handler displays a nice error message when something goes wrong. The error message is logged to the configured logs.

Note: The configured "productionExceptionHandler" is used if [SYS][displayErrors] is set to "0" or is set to "-1" and [SYS][devIPmask] doesnt match the user's IP.

debugExceptionHandler

$GLOBALS['TYPO3_CONF_VARS']['SYS']['debugExceptionHandler']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

phpClass

Default

\TYPO3\CMS\Core\Error\DebugExceptionHandler::class

Classname to handle exceptions that might happen in the TYPO3 code. Leave empty to disable the exception handling. The default exception handler displays the complete stack trace of any encountered exception. The error message and the stack trace is logged to the configured logs.

Note: The configured "debugExceptionHandler" is used if [SYS][displayErrors] is set to "1" or is set to "-1" or "2" and the [SYS][devIPmask] matches the users IP.

errorHandler

$GLOBALS['TYPO3_CONF_VARS']['SYS']['errorHandler']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

phpClass

Default

\TYPO3\CMS\Core\Error\ErrorHandler::class

Classname to handle PHP errors. This class displays and logs all errors that are registered as [SYS][errorHandlerErrors]. Leave empty to disable error handling. Errors will be logged and can be sent to the optionally installed developer log or to the syslog database table. If an error is registered in [SYS][exceptionalErrors] it will be turned into an exception to be handled by the configured exceptionHandler.

errorHandlerErrors

$GLOBALS['TYPO3_CONF_VARS']['SYS']['errorHandlerErrors']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

errors

Default

E_ALL & ~(E_STRICT | E_NOTICE | E_COMPILE_WARNING | E_COMPILE_ERROR | E_CORE_WARNING | E_CORE_ERROR | E_PARSE | E_ERROR)

The E_* constants that will be handled by the [SYS][errorHandler]. Not all PHP error types can be handled:

E_USER_DEPRECATED will always be handled, regardless of this setting. Default is 30466 = E_ALL & ~(E_STRICT | E_NOTICE | E_COMPILE_WARNING | E_COMPILE_ERROR | E_CORE_WARNING | E_CORE_ERROR | E_PARSE | E_ERROR) (see PHP documentation).

exceptionalErrors

$GLOBALS['TYPO3_CONF_VARS']['SYS']['exceptionalErrors']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

errors

Default

E_ALL & ~(E_STRICT | E_NOTICE | E_COMPILE_WARNING | E_COMPILE_ERROR | E_CORE_WARNING | E_CORE_ERROR | E_PARSE | E_ERROR | E_DEPRECATED | E_USER_DEPRECATED | E_WARNING | E_USER_ERROR | E_USER_NOTICE | E_USER_WARNING)

The E_* constant that will be converted into an exception by the default [SYS][errorHandler]. Default is 4096 = E_ALL & ~(E_STRICT | E_NOTICE | E_COMPILE_WARNING | E_COMPILE_ERROR | E_CORE_WARNING | E_CORE_ERROR | E_PARSE | E_ERROR | E_DEPRECATED | E_USER_DEPRECATED | E_WARNING | E_USER_ERROR | E_USER_NOTICE | E_USER_WARNING) (see PHP documentation).

E_USER_DEPRECATED is always excluded to avoid exceptions to be thrown for deprecation messages.

belogErrorReporting

$GLOBALS['TYPO3_CONF_VARS']['SYS']['belogErrorReporting']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

errors

Default

E_ALL & ~(E_STRICT | E_NOTICE)

Configures which PHP errors should be logged to the "syslog" database table (extension belog). If set to "0" no PHP errors are logged to the sys_log table. Default is 30711 = E_ALL & ~(E_STRICT | E_NOTICE) (see PHP documentation).

generateApacheHtaccess

$GLOBALS['TYPO3_CONF_VARS']['SYS']['generateApacheHtaccess']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

bool

Default

1

TYPO3 can create .htaccess files which are used by Apache Webserver. They are useful for access protection or performance improvements. Currently .htaccess files in the following directories are created, if they do not exist: typo3temp/compressor/.

You want to disable this feature, if you are not running Apache or want to use own rule sets.

ipAnonymization

$GLOBALS['TYPO3_CONF_VARS']['SYS']['ipAnonymization']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

int

Default

1

allowedValues
0
Disabled - Do not modify IP addresses at all
1
Mask the last byte for IPv4 addresses / Mask the Interface ID for IPv6 addresses (default)
2
Mask the last two bytes for IPv4 addresses / Mask the Interface ID and SLA ID for IPv6 addresses

Configures if and how IP addresses stored via TYPO3s API should be anonymized ("masked") with a zero-numbered replacement. This is respected within anonymization task only, not while creating new log entries.

systemMaintainers

$GLOBALS['TYPO3_CONF_VARS']['SYS']['systemMaintainers']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']

type

array

Default

null

A list of backend user IDs allowed to access the Install Tool

features

New features of TYPO3 that are activated on new installations but upgrading installations may still use the old behaviour.

form.legacyUploadMimeTypes

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['form.legacyUploadMimeTypes']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']

type

bool

Default

true

If on, some mime types are predefined for the "FileUpload" and "ImageUpload" elements of the "form" extension, which always allows file uploads of these types, no matter the specific form element definition.

redirects.hitCount

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['redirects.hitCount']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']

type

bool

Default

false

If on, and if extension "redirects" is loaded, each performed redirect is counted and last hit time is logged to the database.

security.backend.enforceReferrer

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['security.backend.enforceReferrer']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']

type

bool

Default

true

If on, HTTP referrer headers are enforced for backend and install tool requests to mitigate potential same-site request forgery attacks. The behavior can be disabled in case HTTP proxies filter required referer header. As this is a potential security risk, it is recommended to enable this option.

security.frontend.enforceContentSecurityPolicy

New in version 12.3

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['security.frontend.enforceContentSecurityPolicy']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']

type

bool

Default

false

If enabled, the Content Security Policy is applied in frontend scope.

security.frontend.allowInsecureSiteResolutionByQueryParameters

New in version 12.4.4/11.5.30

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['security.frontend.allowInsecureSiteResolutionByQueryParameters']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']

type

bool

Default

false

Resolving sites by the id and L HTTP query parameters is now denied by default. However, it is still allowed to resolve a particular page by, for example, "example.org" - as long as the page ID 123 is in the scope of the site configured for the base URL "example.org".

The flag can be used to reactivate the previous behavior:

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['security.frontend.allowInsecureSiteResolutionByQueryParameters'] = true;
Copied!

security.usePasswordPolicyForFrontendUsers

Changed in version 13.0

availablePasswordHashAlgorithms

$GLOBALS['TYPO3_CONF_VARS']['SYS']['availablePasswordHashAlgorithms']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']

type

array

Default
 

A list of available password hash mechanisms. Extensions may register additional mechanisms here.

linkHandler

$GLOBALS['TYPO3_CONF_VARS']['SYS']['linkHandler']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']['linkHandler']

type

array

Links entered in the TYPO3 backend are stored in an internal format in the database, like t3://page?uid=42. The handlers for the different resource keys (like page in the example) are registered as link handlers.

The TYPO3 Core registers the following link handlers:

Additional link handlers can be added by extensions.

lang

requireApprovedLocalizations

New in version 12.0

Before TYPO3 v12.0 all translations are taken into account when parsing XLF files. As of TYPO3 v12.0, only approved translations are available by default.

$GLOBALS['TYPO3_CONF_VARS']['SYS']['lang']['requireApprovedLocalizations']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']['lang']['requireApprovedLocalizations']

type

bool

Default

true

The attribute approved of the XLIFF standard is respected by TYPO3 since version 12.0 when parsing XLF files. This attribute can either have the value yes or no and indicates whether the translation is final or not.

EXT:my_extension/Resources/Private/Language/locallang.xml
<trans-unit id="label2" resname="label2" approved="yes">
    <source>This is label #2</source>
    <target>Ceci est le libellé no. 2</target>
</trans-unit>
Copied!

This setting can be used to control the behavior:

true
Only translations with the attribute approved set to yes will be used. Any non-approved translation (value is set to no) will be ignored. If the attribute approved is omitted, the translation is still taken into account.
false
All translations are used.

passwordPolicies

New in version 12.0

$GLOBALS['TYPO3_CONF_VARS']['SYS']['passwordPolicies']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']['passwordPolicies']

type

array

Defines the available password policies. Each policy must have a unique identifier (the identifier default is reserved by TYPO3) and must at least contain one validator.

The default configuration:

$GLOBALS['TYPO3_CONF_VARS']['SYS']['passwordPolicies']['default'] = [
    'validators' => [
        \TYPO3\CMS\Core\PasswordPolicy\Validator\CorePasswordValidator::class => [
            'options' => [
                'minimumLength' => 8,
                'upperCaseCharacterRequired' => true,
                'lowerCaseCharacterRequired' => true,
                'digitCharacterRequired' => true,
                'specialCharacterRequired' => true,
            ],
            'excludeActions' => [],
        ],
        \TYPO3\CMS\Core\PasswordPolicy\Validator\NotCurrentPasswordValidator::class => [
            'options' => [],
            'excludeActions' => [
                \TYPO3\CMS\Core\PasswordPolicy\PasswordPolicyAction::NEW_USER_PASSWORD,
            ],
        ],
    ],
];
Copied!

messenger

routing

New in version 12.2

$GLOBALS['TYPO3_CONF_VARS']['SYS']['messenger']['routing']
Path

$GLOBALS['TYPO3_CONF_VARS']['SYS']['messenger']['routing']

type

array

The configuration of the routing for the messenger component. By default, TYPO3 uses a synchronous transport (default) for all messages (*):

$GLOBALS['TYPO3_CONF_VARS']['SYS']['messenger']['routing'] = [
    '*' => 'default',
];
Copied!

You can set a different transport for a specific message, for example:

$GLOBALS['TYPO3_CONF_VARS']['SYS']['messenger']['routing'][\MyVendor\MyExtension\Queue\Message\DemoMessage::class]
    = 'doctrine';
Copied!