Requirements
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
- Geir Arne Waaler
- Graham Brookins Updated Maintainer
- André Rømcke Maintainer
- Andrea Melo Maintainer
- Ricardo Correia Maintainer
Comments
Add a comment