System requirements for running TYPO3
TYPO3 requires a web server, PHP, and a supported database system. Composer is required for Composer-based installations, especially during development.
Table of contents
See also
For current and detailed requirements, including concrete versions, visit:
Related topics:
PHP requirements and configuration
TYPO3 requires PHP with a supported version and specific configuration values and extensions.
Recommended PHP configuration settings
The following should be set in your php.
file:
memory_limit = 256M
max_execution_time = 240
max_input_vars = 1500
pcre.jit = 1
To support file uploads, configure:
post_max_size = 10M
upload_max_filesize = 10M
Required and optional PHP extensions
Required extensions:
pdo
session
xml
filter
SPL
standard
tokenizer
mbstring
intl
Optional but commonly used:
fileinfo
– for detecting uploaded file typesgd
– for image generation and scalingzip
– for language packs and extension archiveszlib
– for output compressionopenssl
– for encrypted SMTP mail delivery
Database-specific PHP extensions
pdo_
(recommended)mysql - or
mysqli
MySQL/MariaDB must support the InnoDB engine.
pdo_
pgsql pgsql
sqlite3
Image processing requirements
If you want TYPO3 to automatically process images (e.g. cropping, resizing, thumbnail generation), install one of the following tools on your server:
- GraphicsMagick (≥ 1.3) (recommended)
- ImageMagick (≥ 6)
These tools are used by TYPO3 for features such as image rendering in content elements and backend previews.
Supported web servers and configuration
TYPO3 supports the following web servers, each requiring specific configuration:
- Apache (Linux/macOS/Windows)
- NGINX (Linux/macOS/Windows)
- IIS (Windows) (Microsoft Windows only)
Apache web server configuration
TYPO3 includes a .htaccess
file with rewrite and security rules.
Apache .htaccess configuration file
This file configures:
- URL rewriting
- Security and access control
- PHP directives
- MIME types
TYPO3 installs this file automatically. On major upgrades, check for new directives and merge them if needed.
You can check the .htaccess
status under:
Admin Tools > Environment > Check Directory Status
Apache virtual host requirements
Your Apache VirtualHost must include:
AllowOverride Indexes FileInfo
Apache modules required or recommended
mod_
alias mod_
authz_ core mod_
deflate mod_
expires mod_
filter mod_
headers mod_
rewrite mod_
setenvif
NGINX web server configuration
NGINX does not support .htaccess
files. Configuration must be done
at the system level.
# TYPO3 - GZIP support for versioned .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 - Rewrite versioned static resources
if (!-e $request_filename) {
rewrite ^/(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ /$1.$3 last;
}
# TYPO3 - Deny access to sensitive files and directories
location ~* composer\.(?:json|lock)$ { deny all; }
location ~* flexform[^.]*\.xml$ { deny all; }
location ~* locallang[^.]*\.(?:xml|xlf)$ { deny all; }
location ~* ext_conf_template\.txt$ { deny all; }
location ~* ext_typoscript_.*\.txt$ { deny all; }
location ~* \.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql|sqlite)$ {
deny all;
}
location ~ _(?:recycler|temp)_/ { deny all; }
location ~ fileadmin/(?:templates)/.*\.(?:txt|ts|typoscript)$ { deny all; }
location ~ ^(?:vendor|typo3_src|typo3temp/var) { deny all; }
location ~ (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|docs?)/ {
deny all;
}
# TYPO3 - Frontend entry point
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
# TYPO3 - Backend entry point
location = /typo3 {
rewrite ^ /typo3/;
}
location /typo3/ {
absolute_redirect off;
try_files $uri /index.php$is_args$args;
}
# TYPO3 - PHP handler via PHP-FPM
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;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
IIS (Windows) web server configuration
TYPO3 includes a default web.
file for IIS with rewrite rules.
Requirements:
File location:
EXT:
Using TYPO3 with Docker-based environments
TYPO3 runs well in Docker-based environments. You can combine PHP with Apache or NGINX using official base images.
Recommended base images:
- Apache:
php:
8. 4- apache - NGINX:
nginx:
+stable php:
8. 4- fpm
Install required PHP extensions and set suitable PHP configuration.
FROM php:8.4-apache
# Enable Apache mod_rewrite
RUN a2enmod rewrite
# Install required PHP extensions for TYPO3
RUN apt-get update && apt-get install -y \
libzip-dev libpng-dev libxml2-dev libonig-dev libicu-dev unzip git \
&& docker-php-ext-install \
pdo pdo_mysql mysqli intl xml mbstring tokenizer opcache zip gd \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
# Set recommended PHP settings
COPY php.ini /usr/local/etc/php/
# Document root
WORKDIR /var/www/html
FROM php:8.4-fpm
# Install required PHP extensions for TYPO3
RUN apt-get update && apt-get install -y \
libzip-dev libpng-dev libxml2-dev libonig-dev libicu-dev unzip git \
&& docker-php-ext-install \
pdo pdo_mysql mysqli intl xml mbstring tokenizer opcache zip gd \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
# Set recommended PHP settings
COPY php.ini /usr/local/etc/php/
# Document root
WORKDIR /var/www/html
See NGINX web server configuration for NGINX configuration.
This image provides PHP-FPM only and is intended to be used together with a separate NGINX container. For guidance on configuring NGINX and PHP-FPM containers to work together, refer to the official Docker documentation:
The Dockerfiles reference a php.
file with recommended settings:
memory_limit = 256M
max_execution_time = 240
max_input_vars = 1500
post_max_size = 10M
upload_max_filesize = 10M
pcre.jit = 1
See also
For official base images, see:
- PHP images: https://hub.docker.com/_/php
- NGINX images: https://hub.docker.com/_/nginx
Refer to these pages for available image variants (e.g. Alpine, FPM) and supported tags for each version.
Recommended Docker images for TYPO3-compatible databases
When using TYPO3 in Docker-based environments, the following official images are commonly used for supported databases:
- MySQL: mysql:8.0
- MariaDB: mariadb:10.6
- PostgreSQL: postgres:15
- SQLite: Included as an embedded library in PHP; no separate container needed.
These images can be used with Docker Compose or similar orchestration tools. Ensure proper volume mounts and configuration (users, encoding, collation) for TYPO3 compatibility.
Using DDEV for local TYPO3 development
DDEV is a widely used and recommended solution for running TYPO3 projects locally. It provides a preconfigured Docker-based environment with TYPO3- compatible PHP, web server, and database services.
To set up a TYPO3 project with PHP 8.4, run:
ddev config --php-version 8.4 --docroot public --project-type typo3
This will generate the necessary configuration and allow you to start the project using:
ddev start
DDEV supports Composer-based TYPO3 projects and works on Linux, macOS, and Windows. It is ideal for teams and reproducible local setups.
See also
For full DDEV documentation, see:
Supported database systems and required permissions
TYPO3 supports the following relational database systems:
- MySQL
- MariaDB
- PostgreSQL
- SQLite
Each system has specific configuration and extension requirements. See the list of required PHP extensions for supported databases:
The database user must be granted specific privileges to allow TYPO3 to function correctly.
Required database privileges for TYPO3
Required:
SELECT
,INSERT
,UPDATE
,DELETE
CREATE
,DROP
,INDEX
,ALTER
CREATE TEMPORARY TABLES
,LOCK TABLES
Recommended:
CREATE VIEW
,SHOW VIEW
EXECUTE
,CREATE ROUTINE
,ALTER ROUTINE
SQL mode compatibility
TYPO3 expects compatibility with the default SQL_
settings of
supported databases.
These SQL modes are tested and supported:
STRICT_
ALL_ TABLES STRICT_
TRANS_ TABLES ONLY_
FULL_ GROUP_ BY NO_
ENGINE_ SUBSTITUTION ERROR_
FOR_ DIVISION_ BY_ ZERO
The following mode is known to be incompatible:
NO_
BACKSLASH_ ESCAPES
Custom or third-party extensions should be tested individually.
Composer usage in TYPO3 projects
Composer is required for Composer-based TYPO3 installations and is commonly used in modern development workflows.
It is not required for Classic mode installations using the source package.
In production environments, Composer is not needed if the project is deployed using file-based methods (for example Rsync, Deployer).