Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

2. Voraussetzungen

Dieses Kapitel führt auf, was ein Rechner braucht, bevor Exponential darauf installiert werden kann, und warum jeder Punkt nötig ist: die PHP-Version (7.4 bis 8.5; 8.0 für Velocity und Layouts), jede PHP-Extension mit…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/install/02-requirements.md

On this page

This page is a translation. Read the English original

2. Voraussetzungen

Dieses Kapitel führt auf, was ein Rechner braucht, bevor Exponential darauf installiert werden kann, und warum jeder Punkt nötig ist: die PHP-Version (7.4 bis 8.5; 8.0 für Velocity und Layouts), jede PHP-Extension mit der Stelle im Code, die sie verlangt, die php.ini-Einstellungen, die der Setup-Assistent prüft, die Datenbankserver und ihre Mindestversionen, Composer, einen Webserver sowie Hinweise zu Red Hat Enterprise Linux 9 und seinen Nachbauten, zu Debian und Ubuntu und zu Plesk. Zum Schluss steht, was die Dokumentation über Arbeitsspeicher und Festplatte sagt. Alles hier stammt aus composer.json, settings/setup.ini, settings/site.ini und kernel/setup/; wo ein Dokument und der Code einander widersprechen, gilt der Code, und das Kapitel sagt es. Prüfen Sie einen Rechner anhand dieses Kapitels, bevor Sie etwas herunterladen: Eine fehlende Extension, die Sie jetzt finden, kostet eine Paketinstallation; findet man sie mitten in einer Installation, kostet sie einen Neustart der Installation.

Warnung .htaccess bremst jede Anfrage. Sind .htaccess-Dateien erlaubt (AllowOverride alles außer None), geschweige denn genutzt, sucht Apache sie bei jeder Anfrage in jedem Verzeichnis des Pfads und liest und wertet sie aus, und die Ladezeiten der Seiten steigen drastisch (gemessen). Die einzige wirkliche Abhilfe ist, die Funktion für den virtuellen Host abzuschalten: AllowOverride None im virtuellen HTTPS-Host, und die Regeln in der Konfiguration des virtuellen Hosts selbst als mod_rewrite-Regeln. Das ist in Geschwindigkeitstests im Produktivbetrieb weit schneller und die Zeit für die Optimierung einer Produktivkonfiguration unbedingt wert. Stellen Sie sofort um: Übernehmen Sie die Regeln des Beispiels für einen virtuellen HTTPS-Host in Ihren virtuellen Host (mit dem statischen Cache auch staticcache_offload.conf), setzen Sie AllowOverride None, führen Sie apachectl configtest aus, laden Sie Apache neu und testen Sie die Website. Dieselben Regeln für andere Server: nginx, LiteSpeed, Caddy, IIS, Velocity (eingebaut); wohin Regeln für virtuelle Hosts in einem Control Panel gehören: Plesk, cPanel, DirectAdmin, ISPConfig. Unter LiteSpeed oder OpenLiteSpeed kann zusätzlich der Seiten-Cache des Servers anonyme Besucher und Crawler ohne PHP bedienen: Seiten-Caching mit LiteSpeed und OpenLiteSpeed.

Inhalt · Zurück: 1. Einführung · Weiter: 3. Den Code beschaffen

2.1 Die Checkliste

BedarfMinimumEmpfohlenGeprüft durch
PHP8.0 unterstützt; 7.4 ohne Support nutzbardas neueste 8.x, das Ihr System anbietet (8.5 wird unterstützt)Composer (composer.json, require.php, und das Metapaket se7enxweb/exponential-php-floor); den Setup-Assistenten (settings/setup.ini, [phpversion] MinimumVersion=7.4.0)
PHP für Exponential Layouts und die Mediensite8.0wie obenComposer (die Pakete explayouts, expsite und sevenx-themes-media; das Metapaket installiert sie ab PHP 8.0, mit exponential-php-floor 1.1.4 und neuer)
PHP für Exponential Velocity8.0, mit sockets (ab dem Release 0.0.4.54; bis dahin 8.1)wie oben, mit pcntl und opensslComposer (se7enxweb/exponential-velocity: "php": ">=8.0", "ext-sockets": "*")
PHP-Extensionssiehe 2.3zusätzlich die empfohlenenComposer (ext-*), den Systemtest des Setup-Assistenten
php.inimemory_limit 64M, max_execution_time 30, date.timezone gesetzt, file_uploads an, allow_url_fopen anden Systemtest des Setup-Assistenten
DatenbankSQLite 3 (kein Server)in der offiziellen Reihenfolge: SQLite 3, PostgreSQL, MongoDB, MariaDB, Oracle, MySQL (2.6)den Datenbankschritt des Setup-Assistenten
Composer2.xdas aktuelle 2.xSie
Webserverkeiner (Velocity oder der eingebaute Server von PHP)Velocity oder Apache/nginx mit PHP-FPMSie
BildkonvertierungGD (imagegd2) oder convert von ImageMagickbeidesden Systemtest des Setup-Assistenten

Am schnellsten prüfen Sie einen Rechner, indem Sie das dem Setup-Assistenten überlassen: Seine Seite Systemtest führt jeden kritischen Test aus und gibt für jeden Fehler die Ursache und die Abhilfe aus (bei Berechtigungen die genauen Befehle chmod und chown). Die Tests sind in 2.4 beschrieben. Der Kickstarter und exp:install führen dieselben Tests in ihrem Schritt SystemCheck aus und halten dort mit denselben Meldungen an; eine Installation über die Kommandozeile ist daher eine ebenso gute Prüfung (für das PHP der Kommandozeile).

2.2 PHP

Versionen

Unterstützt: PHP 8.0 bis 8.5. Ohne Support nutzbar: PHP 7.4 (Exponential 6.0.15 und neuer). „Ohne Support“ heißt: Die Software ist so gebaut, dass sie unter PHP 7.4 nutzbar ist, aber das Projekt gibt keine Zusage für Fehler- oder Sicherheitskorrekturen, die nur PHP 7.4 betreffen; Sie nutzen es auf eigenes Risiko, und die Funktionen, die PHP 8 brauchen, gibt es dort nicht.

PHPStatus
7.4Ab 6.0.15 ohne Support nutzbar, für Websites, die noch nicht auf PHP 8 umziehen können (keine Zusage für Fehler- oder Sicherheitskorrekturen). Der Kernel und die mitgelieferten Extensions laufen darauf; Velocity, Exponential Layouts und einige Erweiterungen, die PHP 8 brauchen, werden nicht installiert (die vollständige Tabelle steht in Warum Exponential PHP 7.4 unterstützt).
8.0Unterstützt. Der Kernel und die mitgelieferten Extensions laufen darauf unter Apache mit mod_php oder PHP-FPM. Sie ist das Standard-PHP von Red Hat Enterprise Linux 9, AlmaLinux 9 und Rocky Linux 9. Velocity läuft darauf ab seinem Release 0.0.4.54 (was sich unterscheidet, steht in 2.9); Exponential Layouts braucht 8.1.
8.1 bis 8.4Unterstützt, einschließlich Velocity und Layouts (wie auf 8.0).
8.5Unterstützt; die neueste getestete Version.
7.3 und älterNicht unterstützt. Eine Site, die bei PHP 7.3 oder älter bleiben muss, bleibt bei 6.0.7 oder früher.

composer.json deklariert:

"php": "^7.4 || ^8.0 || ^8.1 || ^8.2 || ^8.3 || ^8.4 || ^8.5 || ^8.6 || ^8.7 || ^8.8"

Composer verweigert daher die Installation auf allem, was älter als 7.4 ist. Die Versionen nach 8.5 werden von der Bedingung akzeptiert, sind aber weder erschienen noch getestet. Verwenden Sie das neueste PHP, das Ihr System anbietet: Jede Version bringt mehr Geschwindigkeit, und die älteren verlieren zuerst die Sicherheitsunterstützung (siehe die unterstützten Versionen von PHP). PHP 7.4 selbst erhält seit November 2022 keine Sicherheitskorrekturen des PHP-Projekts mehr; betreiben Sie es nur dort, wo Ihre Distribution oder Ihr Hoster es noch pflegt, und planen Sie den Umzug auf PHP 8.

Ein Metapaket pro PHP-Bereich. Der Kernel verlangt außerdem se7enxweb/exponential-php-floor (~1.0.3 || ~1.1.4 || ~1.2.3 || ~1.3.3). Jede seiner Versionen gehört zu einem PHP-Bereich und verlangt die Erweiterungs-Releases und das Twig-3-Release, die dort laufen: 1.0.3 für PHP 7.4 (ohne Support nutzbar, se7enxweb/twig ~3.11.4), 1.1.4 für 8.0 (se7enxweb/twig ~3.19.1, mit Exponential Layouts, expsite und dem Media-Site-Theme), 1.2.3 für 8.1 bis 8.3 und 1.3.3 für 8.4 und neuer (twig/twig ^3.27). Die früheren Versionen (1.0.0 bis 1.0.2, 1.1.0 bis 1.1.2, 1.2.0 bis 1.2.2, 1.3.0 bis 1.3.2) erlaubten ältere Erweiterungs-Releases oder installieren kein Twig und sind ausgeschlossen. Der Kernel verlangt twig/twig nicht selbst: Das Upstream-Twig bis 3.26 ist durch Sicherheitshinweise gesperrt, und 3.27 verlangt PHP 8.1. Composer installiert die Version, die zum PHP passt, mit dem es läuft; dasselbe composer require se7enxweb/exponential ergibt so auf jedem unterstützten PHP eine vollständige Installation, mit eingeschalteten Sicherheitsprüfungen von Composer. Führen Sie Composer mit dem PHP aus, das die Website verwenden wird (siehe PHP auf der Kommandozeile und im Web).

Die GraphQL-Bibliothek ist optional. Die GraphQL-API läuft auf webonyx/graphql-php 15 (^15.32.3), das composer.json vorschlägt und unter require-dev führt, aber nicht verlangt, und das das Metapaket nicht installiert: Exponential Platform Legacy 3.x (ibexa/graphql-php 0.13) und 4.6.x auf PHP 7.4 (se7enxweb/graphql-php 14) bringen für ihr eigenes GraphQL-Bundle eine andere Version mit, und eine Voraussetzung ließ ihre Installation scheitern. Der Kernel allein (composer create-project, oder composer install in einem Checkout) installiert sie; mit --no-dev fügen Sie sie mit composer require webonyx/graphql-php:^15.32.3 hinzu. Ohne sie, oder mit einer anderen Version, ist nur die GraphQL-API nicht verfügbar und sagt, warum (Die Bibliothek).

In 6.0.15 wird PHP 8.0 wieder unterstützt, und PHP 7.4 ist wieder nutzbar, ohne Support. Die veröffentlichten Releases v6.0.8 bis v6.0.14 verlangen in ihrer composer.json PHP 8.1, und v6.0.7 verlangt 7.4 oder 8.1; installieren Sie auf PHP 7.4 oder 8.0 daher die Linie 6.0.15 (~6.0.15: den Tag v6.0.15, sobald er veröffentlicht ist, oder dev-main; Kapitel 3).

Unter PHP 7.4 und 8.0 lädt autoload.php die Datei lib/phpcompat.php, die die wenigen Funktionen definiert, die diesen Versionen fehlen (darunter array_is_list()), und Composer installiert symfony/polyfill-php80 und symfony/polyfill-php81 für den Rest (str_contains() und ähnliche); unter 8.1 und neuer tun diese Dateien nichts. Die Einzelheiten stehen in PHP-8.0-Unterstützung und Warum Exponential PHP 7.4 unterstützt. Die Geschichte der Arbeit an PHP 8 seit 6.0.0 steht in PHP-8-Unterstützung.

So prüfen Sie es. Die erste Zeile von php -v nennt die Version:

PHP 8.5.11 (cli) (built: Sep 22 2026 13:32:06) (NTS gcc x86_64)

Die PHP-Prüfung des Setup-Assistenten. Der kritische Test phpversion vergleicht das laufende PHP mit settings/setup.ini, [phpversion] MinimumVersion=7.4.0 (dieselbe Untergrenze wie in composer.json) und lehnt die in UnstableVersions aufgeführten Versionen ab (6, die PHP-Version, die nie erschienen ist). Da Composer 7.4 bereits erzwingt, schlägt dieser Test in der Praxis nur fehl, wenn das PHP des Webservers älter ist als das PHP der Kommandozeile, mit dem Composer lief – und genau diesen Fall soll er abfangen.

64-Bit-PHP. composer.json schlägt php-64bit vor: „For support of more than 30 languages, a 64bit php installation on all involved prod/dev machines is required“. Der Grund ist, dass die Sprachen eines Objekts als Bits einer einzigen Ganzzahl gespeichert werden. Die PHP-Pakete der aktuellen Linux-Distributionen sind 64-Bit-Builds; unter PHP 8.5 gibt php -i | grep "Integer Size" auf einem solchen Build PHP Integer Size => 64 bits aus.

PHP auf der Kommandozeile und im Web

Exponential verwendet PHP zweimal: Das PHP des Webservers (PHP-FPM, mod_php oder die Worker von Velocity) liefert die Seiten aus, und das PHP der Kommandozeile (php) führt Composer, die Installer, die Konsole, die Cronjobs und Velocity selbst aus. Beide müssen in einer unterstützten Version vorliegen und dieselben Extensions haben. Auf Rechnern mit mehreren PHP-Versionen (Plesk, Remi) ist das php im PATH oft nicht dasjenige, das der Webserver verwendet; rufen Sie die richtige Programmdatei über ihren Pfad auf, zum Beispiel /opt/plesk/php/8.5/bin/php bin/php/console ....

Was schiefgeht, wenn sie sich unterscheiden: Composer wählt, mit einem neueren PHP auf der Kommandozeile ausgeführt, Paketversionen, die das Web-PHP nicht ausführen kann, oder die Installation über die Kommandozeile gelingt, und der Browser zeigt danach eine weiße Seite, weil dem Web-PHP eine Extension fehlt. Vergleichen Sie vor der Installation php -v und php -m mit der PHP-Informationsseite des Webservers.

2.3 PHP-Extensions

Drei Quellen bestimmen, welche Extensions benötigt werden: composer.json (require und suggest) sowie die Tests des Setup-Assistenten, aufgeführt in settings/site.ini, [SetupSettings] CriticalTests (müssen bestanden werden) und OptionalTests (werden nur gemeldet), mit ihren Parametern in settings/setup.ini.

Erforderlich

ExtensionVerlangt vonWarum
domcomposer.json; kritischer Test dom_extensionXML: Das Rich-Text-Feld wird als XML gespeichert und mit DOM geparst; auch Pakete und Werkzeuge für Einstellungen lesen XML
libxmlcomposer.jsondie XML-Bibliothek unter dom, simplexml und xsl
simplexmlcomposer.jsonLesen von XML-Dateien, zum Beispiel der Metadaten von Extensions (kernel/private/classes/ezpextension.php) und von Bildattributen
xslkritischer Test xsl_extensionder Setup-Assistent fährt ohne sie nicht fort
mbstringcomposer.json; kritischer Test mbstring_extensionMultibyte-Zeichenketten in jeder Sprache; der Test listet außerdem die Zeichensätze auf, die mbstring umwandeln kann (eZMBStringMapper)
iconvcomposer.json; kritischer Test iconv_extensionUmwandlung von Zeichensätzen („Without it Exponential will not work.“)
intlkritischer Test intl_extensionder Setup-Assistent fährt ohne sie nicht fort; der Kernel verwendet sie außerdem für internationale Hostnamen (idn_to_ascii())
pcrecomposer.jsonreguläre Ausdrücke überall (Teil von PHP)
jsoncomposer.jsonJSON in der Administration, in der REST-API und in der Konsole (seit 8.0 Teil von PHP)
reflection, splcomposer.jsonverwendet vom Kernel und von den expcomponents (Teil von PHP)
sessioncomposer.json; kritischer Test php_sessionBenutzersitzungen
zlibkritischer Test zlib_extensiongzip: Paketarchive, die gzip-Datei-Handler in lib/ezfile/, komprimierte Audit-Dateien
eine Datenbank-Extensionkritischer Test database_extensionssqlite3, mysqli, pgsql, mongodb oder oci8; mindestens eine (Require=one)
gd oder ImageMagickkritischer Test image_conversionBildvarianten; entweder imagegd2() aus GD oder das Programm convert (Require=one)

Die Meldungen des Assistenten für eine fehlende Extension lauten zum Beispiel „Missing DOM extension“, „Missing xsl extension“, „Missing intl extension“ oder „Missing database handler“ („No supported database handlers were found. Exponential requires a database to store it's data, without one the system will fail.“). Sie stammen aus design/standard/templates/setup/tests/.

Für Velocity fügt das Engine-Paket eigene hinzu: Es verlangt sockets (TCP-Optionen bei Client-Verbindungen) und schlägt pcntl (geordnetes Herunterfahren und der Worker-Pool) und openssl (HTTPS) vor. In der Praxis sind für ein produktives Velocity alle drei nötig.

Datenbank-Extensions

DatenbankPHP-ExtensionHinweise
1. SQLite 3sqlite3Der Standard; sonst wird nichts benötigt.
2. PostgreSQLpgsql
3. MongoDBmongodb (PECL)Der Treiber (lib/ezdb/classes/expmongodb.php) benötigt außerdem die PHP-Bibliothek mongodb/mongodb (MongoDB\Client), die composer.json vorschlägt, aber nicht verlangt: Fügen Sie sie mit composer require mongodb/mongodb hinzu. Die MongoDB-Seite nennt PHP 8.2 oder neuer als Voraussetzung.
4. MariaDBmysqliDerselbe Treiber wie für MySQL.
5. Oracleoci8Über die Extension ezoracle, die composer.json verlangt; oci8 selbst kommt von Ihrem Anbieter, aus EPEL oder von Remi.
6. MySQLmysqlicomposer.json schlägt ext-mysqli vor (seine Beschreibung nennt mysqli noch den Standard-Handler, aus der Zeit, bevor SQLite der Standard wurde).

Der optionale Test database_all_extensions meldet, welche von sqlite3, mysqli, pgsql und mongodb fehlen; das ist nur eine Information. Installieren Sie nur die Extension der Datenbank, die Sie verwenden.

Empfohlen

ExtensionQuelleWarum
curlcomposer.json suggest; optionaler Test curl_extension„better support for interacting with other servers, like downloading packages over SSL“
gdcomposer.json suggest; optionaler Test imagegd_extensionBildbearbeitung, sofern ImageMagick nicht installiert ist
opensslcomposer.json suggest„cryptographically secure random bytes“; HTTPS in Velocity
pcntlcomposer.json suggestasynchrones Veröffentlichen (bin/php/ezasynchronouspublisher.php forkt mit pcntl_fork()); der Worker-Pool von Velocity
opcache(Performance)der Cache für kompilierten Code von PHP; ab PHP 8.5 immer einkompiliert. Siehe Velocity-Opcode-Cache
rediscomposer.json suggest (se7enxweb/sevenx_valkey, sevenx_valkey_cache)nur für die Valkey/Redis-Cache-Extensions

Der optionale Test texttoimage_functions prüft imagettftext() und imagettfbbox() (GD mit FreeType), die der Template-Operator für Text-zu-Bild benötigt. imagemagick_program sucht convert in /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin und /usr/local/sbin.

Herausfinden, was fehlt

php -m

listet die Extensions auf, die das PHP der Kommandozeile hat. Ist Velocity installiert, vergleicht die Konsole den Rechner außerdem mit dem Extension-Satz des Velocity-Pakets:

php bin/php/console exp:velocity ext check

gibt je Extension eine Zeile aus, markiert mit ok oder als fehlend, mit dem jeweiligen Zweck, zum Beispiel:

PHP 8.5 on linux-x86_64: provides the 'lite' set; checked against 'standard'
  ok  sockets          server       TCP options (no-delay, keep-alive) on client connections
  ok  dom              required     XML documents: rich text, packages, feeds, WebDAV
  ok  intl             required     Locale-aware formatting, collation and transliteration

und exp:velocity ext install-hint <extension> ... gibt den Befehl zur Paketinstallation für Ihr System aus, zum Beispiel php bin/php/console exp:velocity ext install-hint intl xsl. (exp:velocity ext list|check|plan|install-hint|build übergibt an qbixctl ext:<action> der Engine und benötigt daher das Velocity-Paket, siehe Kapitel 3; als root fügen Sie --allow-root-user hinzu.)

2.4 Der Systemtest des Setup-Assistenten

Der Assistent führt die Tests aus [SetupSettings] CriticalTests auf seiner Seite Systemtest aus und die aus OptionalTests auf Feineinstellung des Systems. Ein kritischer Fehler hält den Assistenten an, bis er behoben ist (oder der Test mit seinem Kontrollkästchen ignoriert wird, was nicht empfohlen ist: Ein ignorierter Test schlägt später meist erneut fehl, dann als defekte Seite).

Kritische Tests

TestPrüftEinstellung in settings/setup.iniAbhilfe
directory_permissionsDer Webserver kann in die Verzeichnisse aus CheckList schreiben[directory_permissions] CheckList: design, extension, settings, settings/override, settings/siteaccess, settings/siteaccess/admin, var, var/cache und seine Unterverzeichnisse, var/log, var/storage und seine Unterverzeichnisse, var/autoloaddie Befehle chmod/chown, die die Seite ausgibt
phpversionPHP mindestens MinimumVersion, keine aus UnstableVersions[phpversion] MinimumVersion=7.4.0ein neueres PHP
database_extensionsmindestens eine Datenbank-Extension[database_extensions] Extensions=sqlite3;mysqli;pgsql;mongodb;oci8, Require=oneeine installieren
image_conversionimagegd2() von GD oder convert von ImageMagick[image_conversion] TestList, Require=onegd oder ImageMagick installieren
safe_modesafe_mode aus(aus PHP entfernt; immer bestanden)
memory_limitmemory_limit mindestens MinMemoryLimit; -1 (unbegrenzt) besteht[memory_limit] MinMemoryLimit=64Min der php.ini erhöhen
execution_timemax_execution_time mindestens MinExecutionTime; 0 (unbegrenzt) besteht[execution_time] MinExecutionTime=30in der php.ini erhöhen
magic_quotes_runtimeMagic Quotes aus(aus PHP entfernt; immer bestanden)
allow_url_fopenallow_url_fopen anin der php.ini einschalten
php_sessiondie Extension session[php_session]installieren
file_uploadfile_uploads an, und das Upload-Verzeichnis existiert und ist beschreibbar[file_upload]siehe 2.5
zlib_extension, dom_extension, iconv_extension, mbstring_extension, intl_extension, xsl_extensiondie Extension ist geladenje ein Blockinstallieren
timezoneeine Zeitzone wurde gewähltdate.timezone setzen
ezcversiondie Bibliotheken des Kernels (die expcomponents, früher die Zeta Components) sind vorhanden: Klasse ezcBaseFile mit der Methode walkrecursive[ezcversion]composer install

Der Verzeichnistest läuft als der Benutzer, der die Prüfung ausführt: im Browser der Benutzer des Webservers, auf der Kommandozeile derjenige, der den Kickstarter startet. Eine Installation über die Kommandozeile durch einen anderen Benutzer kann den Test bestehen und trotzdem Dateien hinterlassen, die der Webserver nicht beschreiben kann; Kapitel 3 zeigt, wie Sie sie übergeben.

Optionale Tests

variables_order (muss E enthalten, damit PHP Umgebungsvariablen registriert), php_magicquotes, curl_extension, imagegd_extension, imagemagick_program, database_all_extensions, php_register_globals, texttoimage_functions und open_basedir. Der letzte warnt, wenn open_basedir gesetzt ist: „open_basedir is in use and can give problems running Exponential due to bugs in some PHP versions.“

Alle Testfunktionen stehen in kernel/setup/ezsetuptests.php; die Meldungen stehen in design/standard/templates/setup/tests/<test>_error.tpl.

2.5 Einstellungen in der php.ini

EinstellungWertWarum
memory_limitmindestens 64Mkritischer Test memory_limit („Insufficient memory allocated to install Exponential“). Das ist eine Untergrenze: Paketinstallationen, Importe und Bildbearbeitung brauchen mehr; geben Sie PHP also, was der Rechner erübrigen kann.
max_execution_timemindestens 30kritischer Test execution_time („Insufficient execution time allowed to install Exponential“). Das PHP der Kommandozeile hat standardmäßig keine Begrenzung.
date.timezoneIhre Zeitzone, zum Beispiel Europe/Berlinkritischer Test timezone
file_uploadsOnkritischer Test file_upload
upload_tmp_direin beschreibbares Verzeichnis oder leerwenn leer, nimmt der Test TMPDIR oder /tmp an und prüft, ob dort eine Datei angelegt werden kann
allow_url_fopenOnkritischer Test allow_url_fopen („allow_url_fopen ini setting is disabled“)
variables_orderenthält E, zum Beispiel EGPCSoptionaler Test variables_order („PHP does not register environment variables“)
open_basedirleeroptionaler Test open_basedir
upload_max_filesize, post_max_sizeso groß wie die Dateien, die Redakteure hochladennicht getestet; PHP lehnt größere Uploads ab

Ein minimaler Satz für eine produktive php.ini (oder die php_admin_value-Zeilen eines PHP-FPM-Pools):

memory_limit = 256M
max_execution_time = 60
date.timezone = Europe/Berlin
file_uploads = On
upload_max_filesize = 64M
post_max_size = 64M
allow_url_fopen = On
variables_order = "EGPCS"

Die Werte oberhalb der Mindestwerte sind Vorschläge, keine Anforderungen: Bemessen Sie sie nach der größten Datei, die Ihre Redakteure hochladen, und nach dem längsten Import, den Sie über den Browser ausführen.

Die Zeitzone im Detail. index.php setzt UTC, wenn die php.ini kein date.timezone enthält. Nur in diesem Fall schlägt der Test fehl: Eine php.ini, die date.timezone setzt, selbst auf UTC, ist eine Entscheidung und besteht (eZSetupTestTimeZone()). Die Site kann außerdem ihre eigene Zeitzone in settings/site.ini, [TimeZoneSettings] TimeZone setzen (vom Kernel bei jeder Anfrage angewendet), und config.php kann date_default_timezone_set() aufrufen; das auskommentierte Beispiel steht in config.php-RECOMMENDED. Die gültigen Namen sind in der Liste der unterstützten Zeitzonen des PHP-Handbuchs aufgeführt.

Starten Sie nach dem Bearbeiten der php.ini neu oder laden Sie neu, was PHP ausführt: PHP-FPM, Apache mit mod_php oder Velocity (php bin/php/console exp:velocity restart). php --ini zeigt, welche Dateien das PHP der Kommandozeile liest; das Web-PHP liest unter Umständen andere (PHP-FPM-Pools haben ihre eigenen php_admin_value-Zeilen). Eine Änderung, die „nicht funktioniert“, ist meistens eine Änderung an der Datei, die das jeweils andere PHP liest.

2.6 Datenbanken

Unterstützte Datenbanken (Exponential 6.0.x), nach Präferenz geordnet: 1. SQLite 3 (Standard) · 2. PostgreSQL · 3. MongoDB · 4. MariaDB · 5. Oracle · 6. MySQL. Microsoft SQL Server ist derzeit bekanntermaßen mit zusätzlichem Aufwand möglich. Einzelheiten: Datenbankunterstützung.

DatenbankDatabaseImplementation und Aliase (settings/site.ini, [DatabaseSettings] ImplementationAlias[])Vom Assistenten geprüfte Mindestversion des ServersPraktisches Minimum
1. SQLite 3sqlite33.0.13.33 (UPDATE ... FROM)
2. PostgreSQLpgsql, postgresql, ezpostgresql8.013 (pgcrypto als vertrauenswürdige Extension)
3. MongoDBmongodb4.06.0, mit PHP 8.2
4. MariaDBmysqli, mysql, ezmysqli, ezmysql4.1.1eine Release, die Ihr Anbieter unterstützt
5. Oracleoracle, ezoracle (aus extension/ezoracle/settings/site.ini.append.php)1919c
6. MySQLmysqli, mysql, ezmysqli, ezmysql4.1.1eine Release, die Ihr Anbieter unterstützt

Die Mindestversionen, die der Assistent prüft, sind die aus eZSetupDatabaseMap() in kernel/setup/ezsetupcommon.php. Sie sind Untergrenzen, keine Empfehlungen: Betreiben Sie eine Version, die Ihr Anbieter noch unterstützt. Die praktischen Mindestwerte ergeben sich aus den Treibern; Datenbankunterstützung erläutert jeden einzelnen und führt die Versionen auf, die auf dem Entwicklungsserver und in der CI nachweislich funktionieren.

  • SQLite ist der Standard (settings/setup.ini, [DatabaseSettings] DefaultType=sqlite3) und benötigt keinen Server: Die Datenbank ist eine einzelne Datei unter var/storage/sqlite3/. Sie ist eine vollwertige Produktionsdatenbank; siehe die Funktionsseite zu SQLite.
  • PostgreSQL benötigt die Extension pgcrypto in der Datenbank (ihre Funktion digest). Der Assistent versucht, sie anzulegen; wenn er das nicht kann, sagt er es und bittet darum, dass der Eigentümer der Datenbank oder ein Superuser CREATE EXTENSION pgcrypto; ausführt.
  • MongoDB und Oracle: siehe ihre Seiten, MongoDB und Treiber für SQLite und Oracle.
  • MariaDB oder MySQL: Die Datenbank muss UTF-8 verwenden. Wenn der Zeichensatz der Datenbank von dem abweicht, den der Assistent möchte, hält der Assistent mit „The database [...] cannot be used, the setup wizard wants to create the site in [...] but the database has been created using character set [...]“ an. Legen Sie die Datenbank mit CHARACTER SET utf8mb4 an, dann kann das nicht passieren.
  • Microsoft SQL Server hat in 6.0.x keinen Treiber; was dafür nötig wäre, steht in Datenbankunterstützung.

Legen Sie bei einem Datenbankserver vor der Installation die Datenbank und einen Benutzer an, der darin Tabellen anlegen darf; die Installer legen weder Datenbanken noch Benutzer an. Die Auswahl und das Tuning einer Datenbank sind Thema von Kapitel 9.

2.7 Composer

Exponential wird mit Composer 2 installiert. Composer lädt die Bibliotheken des Kernels (die expcomponents, seit 6.0.15 der Fork der Zeta Components durch Exponential), die Extensions, die composer.json verlangt, und, wenn Sie es wünschen, Velocity herunter. Ohne Composer oder ohne dass er ausgeführt wurde, fehlt vendor/, und die Site kann nicht starten.

  • Installieren Sie ihn wie auf getcomposer.org/download beschrieben und prüfen Sie ihn mit composer --version; das gibt die Composer-Version und das PHP aus, mit dem er läuft, zum Beispiel Composer version 2.8.12 2025-09-19 13:41:59 und PHP version 8.5.11 (/usr/bin/php).
  • composer.json führt das Installer-Plugin se7enxweb/exponential-legacy-installer unter config.allow-plugins auf. Diese Einstellung gibt es seit Composer 2.2; ein älteres Composer 2 ignoriert sie. Verwenden Sie ein aktuelles Composer 2.
  • Composer läuft mit dem PHP der Kommandozeile. Gegen dessen Version und Extensions prüft Composer die Anforderungen ext-* und php.
  • Die Entwicklungsabhängigkeiten sind so gewählt, dass sie zu jedem unterstützten PHP passen. composer.json hat in require-dev "phpunit/phpunit": "^9.6 || ^10.5 || ^11.5 || ^12.0 || ^13.4", und Composer wählt das PHPUnit, das zum verwendeten PHP passt (9.6 auf 8.0, 10.5 auf 8.1, 11.5 auf 8.2, 12 auf 8.3, 13.4 auf 8.4 und 8.5). Das ist wichtig, weil das Repository keine composer.lock mitliefert, und ohne Lock-Datei löst Composer require-dev auch mit --no-dev auf. Die Testsuite selbst benötigt PHPUnit 10 oder neuer und läuft daher auf PHP 8.1 und neuer. Die Release-Tags v6.0.13 und v6.0.14 verlangen noch PHPUnit 13.0.0, das PHP 8.4.1 benötigt; wie Sie diese Tags auf einem älteren PHP installieren, zeigt Kapitel 3.

composer install führt anschließend das Skript legacy-scripts aus (post-install-cmd und post-update-cmd in composer.json), also php bin/php/ezpgenerateautoloads.php: Die Klassen-Maps werden für Sie erzeugt.

2.8 Webserver

MöglichkeitPHPWann
Exponential Velocity (Engine qbix)8.0+Empfohlen für jede Umgebung. Liefert HTTP und HTTPS selbst aus; kein weiterer Webserver nötig.
Apache mit mod_rewrite und PHP-FPM (oder mod_php)8.0+Die klassische Einrichtung; Shared Hosting. Die Rewrite-Regeln werden in .htaccess_root mitgeliefert.
nginx, LiteSpeed, Caddy und andere mit PHP-FPM8.0+Jeder Server, der eine URL auf index.php umschreiben kann; aufgeführt in der README.
FrankenPHP (über exp:velocity)das der ProgrammdateiProduktionsreife alternative Engine.
Der eingebaute Server von PHP (exp:velocity start --engine=php)8.0+Nur für die Entwicklung.

Für eine Installation mit dem Kickstarter oder über die Konsole wird keiner benötigt; der Setup-Assistent braucht einen, weil er im Browser läuft. Die Einrichtung der einzelnen Server ist Thema von Kapitel 8 und der Anleitung zur Bereitstellung.

2.9 Hinweise zu Betriebssystemen

Exponential läuft überall, wo PHP läuft; die Installation besteht aus gewöhnlichen Dateien. Die folgenden Hinweise behandeln die Systeme, die die Dokumentation und der Code nennen. Die Paketnamen sind diejenigen, die das Extension-Manifest von Velocity (vendor/se7enxweb/exponential-velocity/build/extensions.json) angibt, also das, was exp:velocity ext install-hint ausgibt.

Red Hat Enterprise Linux 9, AlmaLinux 9, Rocky Linux 9

  • Das Standard-PHP des AppStream-Repositorys ist 8.0, mit dem Exponential unter Apache, PHP-FPM oder Velocity läuft. Der Befehl aus PHP-8.0-Unterstützung:

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

    php-xml bringt dom, simplexml, xsl und libxml mit; php-pdo bringt sqlite3; php-common (eine Abhängigkeit) bringt iconv, zlib, session und openssl; php-process bringt pcntl; php-pgsql fügt PostgreSQL hinzu.

  • Velocity braucht keinen neueren Stream: Es läuft ab seinem Release 0.0.4.54 auf dem Standard-PHP 8.0 (siehe PHP 8.0 und Red Hat Enterprise Linux weiter unten). Für ein neueres PHP wechseln Sie zu einem anderen AppStream-Modul-Stream: dnf module list php, dann dnf module reset php, dnf module enable php:8.3 und dnf distro-sync. Mit den Streams php:8.1, php:8.2 und php:8.3 laufen sowohl Exponential als auch Velocity.

  • Das Remi-Repository (Modul-Streams php:remi-8.x oder die parallelen Pakete php<XY> unter /opt/remi) stellt jede Version von 8.0 bis 8.5 bereit. PECL-Extensions (php-pecl-redis, php-pecl-apcu, php-pecl-mongodb) und oci8 kommen aus EPEL, von Remi oder vom Anbieter.

  • Der Dienst des Standard-PHP-FPM heißt php-fpm; bei einer parallelen Remi-Installation heißt er php<XY>-php-fpm.

PHP 8.0 und Red Hat Enterprise Linux

Ab dem Release 0.0.4.54 (20. Oktober 2026) läuft Exponential Velocity unter PHP 8.0 bis 8.5: Die composer.json der Engine verlangt "php": ">=8.0" (bisher >=8.1), und unter 8.0 ist nichts zusätzlich nötig, weder ein Polyfill-Paket noch eine Erweiterung. Die composer.json von Exponential verlangt die Engine als ~0.0.4.57, sodass composer install sie auch unter PHP 8.0 installiert.

  • RHEL 9 und seine Nachbauten: Das Standard-PHP 8.0 aus AppStream führt Velocity aus. Das el9-RPM (exponential-velocity-<release>-1.el9.noarch.rpm) hängt von php-cli >= 8.0 ab und lässt sich installieren, ohne einen Modul-Stream zu aktivieren; ein neuerer Stream funktioniert weiterhin. Mit Composer geht es genauso.
  • RHEL 8: Das Standard-PHP dort ist 7.2. Aktivieren Sie den Stream 8.0 (dnf module enable php:8.0) und verwenden Sie das Phar oder Composer; ein el8-RPM gibt es nicht.

Was sich unter PHP 8.0 unterscheidet, und nur das: Die Bildausgabe als AVIF braucht PHP 8.1 (die Formatauswahl hört bei WebP auf); die Spitze des Speicherverbrauchs je Anfrage im Dashboard braucht PHP 8.2 (die Spalte bleibt leer); $_FILES hat kein full_path, wie in PHP 8.0 selbst; und eine mit eval() deklarierte Klasse mit statischen Eigenschaften führt dazu, dass ihr Worker nach dieser Anfrage ersetzt wird (das ist korrekt und kostet einen Fork). Alles andere erledigt die Engine selbst, und ihre Zygote läuft unter 8.0. Erweiterungen, systemd, SELinux und wie Sie die Installation prüfen: die Seite PHP 8.0 and Red Hat Enterprise Linux der Engine und ihre Anforderungen.

Debian und Ubuntu

  • Die Pakete sind nach der PHP-Version benannt: php<version>-<extension>, zum Beispiel php8.3-intl. Die Extensions, die Exponential benötigt, stecken in php8.3-xml (dom, simplexml, xsl, libxml), php8.3-mbstring, php8.3-intl, php8.3-common (iconv und die anderen gängigen Extensions), php8.3-sqlite3, php8.3-mysql (mysqli), php8.3-pgsql, php8.3-gd, php8.3-curl und php8.3-opcache; pcntl steckt in php8.3-cli.
  • Ersetzen Sie 8.3 durch die Version, die Ihre Distributionsversion mitliefert.
  • Der PHP-FPM-Dienst heißt php<version>-fpm, mit seinen Pools in /etc/php/<version>/fpm/pool.d/.
  • Das Velocity-Paket wird auch als .deb veröffentlicht; siehe Velocity-Pakete und -Programmdateien.

Plesk

  • Plesk installiert jede PHP-Version unter /opt/plesk/php/<version>/ (zum Beispiel /opt/plesk/php/8.5/bin/php) neben dem PHP des Systems. Eine Domain verwendet die Version, die in ihren Hosting-Einstellungen gewählt ist; das php der Kommandozeile ist das des Systems. Führen Sie Composer und die Konsole mit dem PHP der Domain aus.
  • Die mitgelieferten Extensions kommen mit dem PHP von Plesk und werden unter Tools & Einstellungen > PHP-Einstellungen eingeschaltet; PECL-Extensions werden mit /opt/plesk/php/<version>/bin/pecl install <extension> installiert.
  • Jede Domain hat ihren eigenen PHP-FPM-Pool in /opt/plesk/php/<version>/etc/php-fpm.d/<domain>.conf, betrieben vom Dienst plesk-php<XY>-fpm (zum Beispiel plesk-php85-fpm), nicht von php-fpm. Laden Sie nach einer Änderung an PHP diesen Dienst neu. exp:velocity deploy findet ihn selbst (settings/velocity.ini, [DeploySettings] PhpFpmService=auto sucht in /opt/plesk/php/*/etc/php-fpm.d, /etc/php-fpm.d, /etc/php/*/fpm/pool.d und /etc/opt/remi/php*/php-fpm.d).

Andere Systeme

Das Velocity-Manifest kennt außerdem Alpine (apk), FreeBSD (pkg), macOS (Homebrew) und Windows. Die Setup-Tests des Kernels haben Windows-Pfade für ImageMagick (convertim.exe, convert.exe), dieses Handbuch ist aber für Linux geschrieben.

Exponential läuft auf fast jedem Betriebssystem mit PHP 8.0 oder neuer (PHP 7.4 ohne Support nutzbar) und einem Webserver. Unterstützung von Betriebssystemen teilt sie in Stufen ein (hier getestet, bekanntermaßen funktionierend, voraussichtlich funktionierend, derzeit nicht möglich), von den Linux-Distributionen, den BSDs, macOS und Windows bis zu IBM i, Haiku und den 8-Bit-Rechnern, und führt die Webserver und PHP-SAPIs auf.

2.10 Arbeitsspeicher, CPU und Festplatte

Die Dokumentation nennt nur wenige feste Zahlen, und dieses Handbuch erfindet keine weiteren. Was sie angibt:

PunktWertQuelle
PHP memory_limitmindestens 64Msettings/setup.ini, [memory_limit] MinMemoryLimit
Ein Velocity-Workeretwa 10 MB privater Speicher (gemessen)Velocity-Webserver
Velocity-PoolWorkers=4 ausgeliefert (settings/velocity.ini); der eigene Standard der Engine ist, was in den RAM passt, höchstens 8 pro Kern und 64, nie weniger als 4settings/velocity.ini, Velocity-Webserver
Eine MongoDB-InstallationRAM mindestens 512 MB, empfohlen 2 GB; Festplatte mindestens 2 GB, empfohlen 10 GBMongoDB-Unterstützung im Kernel, Abschnitt 24.1

Der Platzbedarf auf der Festplatte wächst mit var/storage (hochgeladene Dateien und Bildvarianten), var/cache und var/log; die Datenbank wächst mit den Inhalten. Messen Sie eine laufende Site, statt zu raten: Der Befehl Benchmark misst die Zeiten von Seiten, und das Kontrollzentrum von Velocity zeigt den Speicherverbrauch. Lesen Sie den Speicher von Velocity so, wie das Kontrollzentrum ihn zeigt, als Proportional Set Size (PSS) des Elternprozesses und seiner Worker: Die Resident Set Size jedes geforkten Workers zählt den gemeinsam genutzten Speicher immer wieder mit und summiert sich auf weit mehr, als der Rechner tatsächlich verbraucht.

Umgebungsvariablen. Exponential liest einige Umgebungsvariablen, aufgeführt unter Umgebungsvariablen. Eine davon, EXP_DEMO_MODE=1, kennzeichnet eine Installation als öffentliche Demo (Demo-Modus); ein Produktionsserver darf sie für keinen Prozess einer echten Site setzen.

Quellen

In diesem Repository:

Extern:

Inhalt · Zurück: 1. Einführung · Weiter: 3. Den Code beschaffen

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x