System Requirements

TYPO3 requires a web server running PHP and access to a database.

Composer is also required for local development.

If you want TYPO3 to automatically carry out image processing – for example scaling or cropping – you will need GraphicsMagick (version 1.3 or newer) or ImageMagick (version 6 or newer) installed on the server. (GraphicsMagick is preferable.)

For up-to-date information about TYPO3's system requirements visit get.typo3.org.

PHP

Configure

The following settings need to be set in the installations php.ini

php.ini
; memory_limit >= 256MB
memory_limit=256M

; max_execution_time >= 240 seconds
max_execution_time=240

; max_input_vars >= 1500
max_input_vars=1500
Copied!

The following settings control the maximum upload file size (and should be adapted if necessary):

php.ini
; To allow uploads of a maximum of 10 MB
post_max_size = 10M
upload_max_filesize = 10M
Copied!

Required Extensions

  • pdo
  • session
  • xml
  • filter
  • SPL
  • standard
  • tokenizer
  • mbstring
  • intl

Depending on the use case, the following extensions may also be required:

  • fileinfo (used to detect file extensions of uploaded files)
  • gd (GDlib/Freetype is required for building images with text (GIFBUILDER) and is also be used to scale images)
  • zip (TYPO3 uses zip to extract language archives as well as extracting and archiving extensions)
  • zlib (TYPO3 uses zlib for output compression)
  • openssl (OpenSSL is required for sending SMTP mails over an encrypted channel endpoint)

Required Database Extensions

  • pdo_mysql (recommended)
  • OR mysqli

The InnoDB engine is required for MySQL and MariaDB instances.

  • pdo_pgsql
  • postgresql
  • sqlite

Web Server

During the initial installation, TYPO3's default .htaccess file is copied to the installation root folder.

Virtual Host Record

  • AllowOverride needs to include "Indexes" and "FileInfo" in the Virtual Host record.

Apache Modules

The following Apache modules are required. The list is based on what is used in the default TYPO3 .htaccess. In some cases, it is not a "hard" requirement, but is strongly recommended for security or performance reasons, but you can also handle the desired outcome in a different way with a different module.

mod_alias:
Block access to vcs directories
mod_authz_core:
Block access to specific files and directories
mod_deflate:
Used for compression and performance.
mod_expires:
Adds HTTP headers for browser caching and performance.
mod_filter:
Used with mod_deflate.
mod_headers:
Used in combination with mod_deflate.
mod_rewrite:
Enable human readable urls.
mod_setenvif:
Also used with mod_deflate.

NGINX does not support static configuration files that are stored in a projects root like Apache and IIS would. Instead, NGINX requires a configuration file to be created within the applications own configuration directory.

Example NGINX configuration file:

/etc/nginx/conf.d/nginx.conf
# Compressing resource files will save bandwidth and so improve loading speed especially for users
# with slower internet connections. TYPO3 can compress the .js and .css files for you.
# *) Set $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = 9 for the Backend
# *) Set $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] = 9 together with the TypoScript properties
#    config.compressJs and config.compressCss for GZIP compression of Frontend JS and CSS files.
location ~ \.js\.gzip$ {
    add_header Content-Encoding gzip;
    gzip off;
    types { text/javascript gzip; }
}
location ~ \.css\.gzip$ {
    add_header Content-Encoding gzip;
    gzip off;
    types { text/css gzip; }
}

# TYPO3 - Rule for versioned static files, configured through:
# - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
# - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
if (!-e $request_filename) {
    rewrite ^/(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ /$1.$3 last;
}

# TYPO3 - Block access to composer files
location ~* composer\.(?:json|lock) {
    deny all;
}

# TYPO3 - Block access to flexform files
location ~* flexform[^.]*\.xml {
    deny all;
}

# TYPO3 - Block access to language files
location ~* locallang[^.]*\.(?:xml|xlf)$ {
    deny all;
}

# TYPO3 - Block access to static typoscript files
location ~* ext_conf_template\.txt|ext_typoscript_constants\.txt|ext_typoscript_setup\.txt {
    deny all;
}

# TYPO3 - Block access to miscellaneous protected files
location ~* /.*\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql|sqlite)$ {
    deny all;
}

# TYPO3 - Block access to recycler and temporary directories
location ~ _(?:recycler|temp)_/ {
    deny all;
}

# TYPO3 - Block access to configuration files stored in fileadmin
location ~ fileadmin/(?:templates)/.*\.(?:txt|ts|typoscript)$ {
    deny all;
}

# TYPO3 - Block access to libraries, source and temporary compiled data
location ~ ^(?:vendor|typo3_src|typo3temp/var) {
    deny all;
}

# TYPO3 - Block access to protected extension directories
location ~ (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ {
    deny all;
}

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

location = /typo3 {
    rewrite ^ /typo3/;
}

location /typo3/ {
    absolute_redirect off;
    try_files $uri /typo3/index.php$is_args$args;
}

location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
    fastcgi_buffer_size 32k;
    fastcgi_buffers 8 16k;
    fastcgi_connect_timeout 240s;
    fastcgi_read_timeout 240s;
    fastcgi_send_timeout 240s;

    # this is the PHP-FPM upstream - see also: https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/#connecting-nginx-to-php-fpm
    fastcgi_pass         php-fpm:9000;
    fastcgi_index        index.php;
    include              fastcgi.conf;
}
Copied!
  • During the initial installation of TYPO3, the default IIS web config file is copied to the installation root folder.
  • Default IIS web config file with rewrite rules can be found in EXT:install/Resources/Private/FolderStructureTemplateFiles/root-web-config
  • The URL Rewrite plugin is required.

Database

Required Database Privileges

The database user requires the following privileges on the TYPO3 database:

  • SELECT, INSERT, UPDATE, DELETE
  • CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES

It is recommended to also grant the following privileges:

  • CREATE VIEW, SHOW VIEW
  • EXECUTE, CREATE ROUTINE, ALTER ROUTINE

Some database systems like MySQL and MariaDB allow to configure SQL language support through a :sqlSQL_MODE setting.

TYPO3 strives to be compatible to the DEFAULT SQL_MODE settings of the database engine versions supported by a specific TYPO3 release.

If you change any setting to a NON-default SQL mode, be prepared to audit all involved code to be compatible to your server mode choice. Notably the settings ANSI and ANSI_QUOTES may cause issues.

NO_AUTO_VALUE_ON_ZERO, NO_ENGINE_SUBSTITUTION, NO_AUTO_CREATE_USER, ERROR_FOR_DIVISION_BY_ZERO, ONLY_FULL_GROUP_BY, NO_ZERO_DATE, NO_ZERO_IN_DATE, STRICT_ALL_TABLES and STRICT_TRANS_TABLES should work with TYPO3 versions 12 and upwards, as the internal tests are performed with the SQL_MODE set to those keys.

Custom or third-party extensions need to be evaluated individually.

Listed as being incompatible is: NO_BACKSLASH_ESCAPES.

Composer

Composer is only required for local installations - see https://getcomposer.org for further information. It is recommended to always use the latest available Composer version. TYPO3 v12 LTS requires at least Composer version 2.1.0.