Skip to the content
Documentation

Requirements

No ratings yet

What a server needs to run Exponential 6 (6.0.15). The setup wizard's System check page tests all of it and prints, for each failure, the cause and the fix; exp:install and the kickstarter run the same tests and stop with the same messages.

PHP

PHP Status
8.5 Supported; the newest version tested.
8.1 to 8.4 Supported, Exponential Velocity and Exponential Layouts included.
8.0 Supported, Velocity included. It is the stock PHP of Red Hat Enterprise Linux 9, AlmaLinux 9 and Rocky Linux 9.
7.4 Usable without support: the kernel and the bundled extensions run, but Velocity, Exponential Layouts and a few extensions that need PHP 8 are not installed, and there is no bug-fix or security commitment.
7.3 and older Not supported.

Composer refuses PHP older than 7.4. The release tags v6.0.8 to v6.0.14 require PHP 8.1; on PHP 7.4 or 8.0 install the 6.0.15 line. A 64-bit PHP is needed for more than 30 languages.

Exponential uses PHP twice: the web server's PHP (PHP-FPM, mod_php or Velocity's workers) and the command line PHP (Composer, the installers, the console, cronjobs). Both must be the same version with the same extensions. On hosts with several PHP versions, call the right binary by its path, for example /opt/plesk/php/8.5/bin/php.

PHP extensions

Needed Extensions
Required dom, libxml, simplexml, xsl, mbstring, iconv, intl, pcre, json, reflection, spl, session, zlib
One database extension sqlite3, pgsql, mongodb, mysqli or oci8
Images gd, or ImageMagick's convert program
Recommended curl, gd, openssl, pcntl, opcache
For Velocity sockets (required), pcntl and openssl (needed in production)

Check what the command line PHP has, and, with Velocity installed, compare the machine with the extension set it expects and print the install command for your system:

php -v
php -m
php bin/php/console exp:velocity ext check
php bin/php/console exp:velocity ext install-hint intl xsl

php.ini settings

Setting Value
memory_limit at least 64M (a floor; give more for imports and images)
max_execution_time at least 30
date.timezone your time zone, for example Europe/Berlin
file_uploads On
allow_url_fopen On
variables_order contains E, for example EGPCS
open_basedir empty
upload_max_filesize, post_max_size as large as the files editors upload

After editing php.ini, reload what runs PHP: PHP-FPM, Apache with mod_php, or Velocity (php bin/php/console exp:velocity restart). php --ini shows which files the command line PHP reads; PHP-FPM pools can set their own values.

Databases

Supported, in order of preference:

Database PHP extension Notes
1. SQLite 3 sqlite3 The default. No server: the database is one file under var/storage/sqlite3/. A full production database; 3.33 or later.
2. PostgreSQL pgsql 13 or later, with the pgcrypto extension in the database.
3. MongoDB mongodb 6.0 or later, PHP 8.2 or later, and the library: composer require mongodb/mongodb.
4. MariaDB mysqli Create the database with CHARACTER SET utf8mb4.
5. Oracle oci8 19c or later, through the ezoracle extension, which Composer installs.
6. MySQL mysqli Create the database with CHARACTER SET utf8mb4.

For a database server, create the database and a user that may create tables in it before you install; the installers do not create databases or users. Microsoft SQL Server has no driver in 6.0.x. More: Database support and Databases.

Composer

Composer 2, a current release (the installer plugin needs 2.2 or later). Composer installs the Zeta Components, the extensions and Exponential Velocity, and regenerates the class maps after every install or update. composer --version names the Composer version and the PHP it runs with: run it with the PHP the site will use.

Web servers

Option When
Exponential Velocity (qbix engine) Recommended for every stage. Installed with Exponential; serves HTTP and HTTPS itself.
Apache with mod_rewrite and PHP-FPM (or mod_php) The classic setup and shared hosting. The rules ship in .htaccess_root.
nginx, LiteSpeed, Caddy, IIS and others with PHP-FPM or FastCGI Any server that can rewrite a URL to index.php.
FrankenPHP, through exp:velocity A production-ready alternative engine.
PHP's built-in server (exp:velocity start --engine=php) Development only.

Only the setup wizard needs a web server during the install; exp:install and the kickstarter do not. Setting each one up: Virtual host setup.

Operating systems

Red Hat Enterprise Linux 9, AlmaLinux 9, Rocky Linux 9: the stock PHP 8.0 runs Exponential and Velocity.

dnf install php php-fpm php-mysqlnd php-gd php-intl php-mbstring php-xml php-pdo php-opcache

php-xml brings dom, simplexml and xsl; php-pdo brings sqlite3; php-process brings pcntl; php-pgsql adds PostgreSQL. For a newer PHP use the AppStream module streams (dnf module enable php:8.3) or the Remi repository.

  • Debian and Ubuntu: packages named php<version>-<extension>, for example php8.3-xml, php8.3-mbstring, php8.3-intl, php8.3-sqlite3, php8.3-gd, php8.3-curl.
  • Plesk: each PHP version under /opt/plesk/php/<version>/, and each domain's PHP-FPM pool run by the service plesk-php<XY>-fpm. Run Composer and the console with the domain's PHP.
  • Windows, macOS, the BSDs and others: see Installing Exponential on Windows and Operating system support.

Memory and disk

PHP needs at least 64M memory_limit. One Velocity worker takes about 10 MB of private memory, and Velocity ships with 4 workers. A MongoDB installation needs 512 MB of RAM at least (2 GB recommended) and 2 GB of disk (10 GB recommended).

The complete chapter, with every setup test and its fix: Requirements in the installation book. Notes for one older system: Install notes for Exponential on RHEL 6.

In this section

Contributors

Comments

Add a comment

Comments are read by a moderator before they appear.