Requirements

You are viewing documentation for an unreleased version of Craft CMS. Please be aware that the material is changing frequently and may be incomplete or inaccurate, and links may point back to older versions.

Craft is a PHP application that uses a relational database for content storage. It will run on most modern hosting environments, and can be configured to take advantage of all kinds of advanced infrastructure.

You can use the official server check (opens new window) script to quickly find out if your server meets Craft’s requirements.

#Minimum System Specs

  • PHP 8.5+
  • MySQL 8.0.17+ using InnoDB, MariaDB 10.4.6+, or PostgreSQL 13+
  • 256MB+ memory allocated to PHP
  • 200MB+ free disk space
  • Composer 2.0+
  • PHP 8.2+
  • MySQL 8.0.36+ using InnoDB, or PostgreSQL 16+
  • 512MB+ of memory allocated to PHP

Due to its diverging parity with MySQL, we no longer recommend MariaDB for sites with many users or a large volume of content.

Partial (and experimental) support has been added for SQLite 3.38.0+. We will make a determination about official support as we approach a general release.

#Required PHP Extensions

We recommend ImageMagick (opens new window) over GD for expanded image handling options.

When multiple image drivers are available on your platform, Craft prefers ImageMagick. You can explicitly select a driver with the imageDriver setting.

#Optional PHP Methods and Configurations

Some shared hosting environments disable common PHP methods and configurations that affect Craft features.

#File Permissions

For Craft to run properly, PHP needs to be able to write to the following files and folders at all times:

  • storage/*
  • config/license.key
  • public/cpresources/*

Additionally, during setup (opens new window) or when updating or installing plugins via the control panel or CLI, Craft may touch these files:

  • .env
  • config/craft/project/*
  • composer.json and composer.lock
  • vendor/*

The exact permissions depend on the relationship between the system user that PHP runs as and the owner of the folders and files:

  • If they’re the same user, use 744 (rwxr--r--).
  • If they’re in the same group, use 774 (rwxrwxr--).
  • If neither of the above options describe your setup, something may have been misconfigured. Reach out to your system administrator for support.

Specifics may vary from platform to platform or host to host! Consult your development or hosting environment’s documentation for more information.

Never set permissions to 777 in a shared environment or on a live site, and never run your HTTP server (or PHP) as root.

#Required Database User Privileges

The database user you tell Craft to connect with must have the following privileges:

#MySQL/MariaDB

  • SELECT
  • INSERT
  • DELETE
  • UPDATE
  • CREATE
  • ALTER
  • INDEX
  • DROP
  • REFERENCES
  • LOCK TABLES

#PostgreSQL

  • SELECT
  • INSERT
  • UPDATE
  • CREATE
  • DELETE
  • REFERENCES
  • CONNECT