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 should be preferred.)

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
  • json
  • pcre >= 8.38
  • session
  • xml
  • filter
  • SPL
  • standard

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)
  • intl (when using unicode-based filesystems)
  • mbstring (optional, but a huge performance boost compared to the polyfill which is used otherwise)

Required Database Extensions

  • pdo_mysql (recommended)
  • OR mysqli

The InnoDB engine is required for MySQL and MariaDB instances.

  • pdo_pgsql
  • postgresql
  • pdo_sqlsrv
  • sqlsrv
  • 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:

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:

# 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

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 11.5 LTS requires at least Composer version 2.1.0.