PHP-Einstellungen für Exponential
Diese Seite ist für Systemadministratoren, die PHP für Exponential-Websites konfigurieren, auf einem geteilten Server,
einem Panel oder einer dedizierten Maschine. Sie beantwortet: auf welchen php.ini-Werten der Installer besteht, was
ein Produktions-Pool setzen sollte, welche PHP-Funktionen Funktionen von Exponential aufrufen (und was nicht mehr
funktioniert, wenn ein Hoster sie deaktiviert) und wo die Einstellungen liegen, wenn Velocity oder FrankenPHP statt
PHP-FPM PHP ausführt.

Inhalt
- Was der Installer prüft
- Ein Produktionssatz für einen Pool
- Zeitzone
- Fehleranzeige
- OPcache unter PHP-FPM
- Funktionen, die manche Funktionen aufrufen
- Zeitlimits
- Velocity und FrankenPHP
- Eine Änderung anwenden
- Checkliste
- Verwandte Seiten
Was der Installer prüft
Aus Kapitel 2.5 und settings/setup.ini:
| Einstellung | Wert | Geprüft von |
|---|---|---|
memory_limit | mindestens 64M (-1 besteht) | kritischer Test memory_limit, [memory_limit] MinMemoryLimit=64M |
max_execution_time | mindestens 30 (0 besteht) | kritischer Test execution_time, [execution_time] MinExecutionTime=30 |
date.timezone | gesetzt | kritischer Test timezone |
file_uploads | On, und das Upload-Verzeichnis existiert und ist beschreibbar | kritischer Test file_upload |
upload_tmp_dir | ein beschreibbares Verzeichnis oder leer | wenn leer, prüft der Test TMPDIR oder /tmp |
allow_url_fopen | On | kritischer Test allow_url_fopen |
variables_order | enthält E, zum Beispiel EGPCS | optionaler Test variables_order |
open_basedir | leer | optionaler Test open_basedir (nur eine Warnung) |
upload_max_filesize, post_max_size | so groß wie die Dateien, die Redakteure hochladen | nicht getestet; PHP lehnt größere Uploads ab |
Die Untergrenze von 64M ist, was der Installer braucht, nicht was eine laufende Website haben sollte. Die
Zustandsprüfung der Administration unter Setup > Systeminformationen meldet ein memory_limit unter 128M als Fehler
und unter 256M als Warnung, und ein max_execution_time unter 30 Sekunden auf einem Webserver
(Systeminformationen, Zustandsprüfungen).
Ein Produktionssatz für einen Pool
Der minimale Produktionssatz aus Kapitel 2, als
php_admin_value-Zeilen eines PHP-FPM-Pools oder in php.ini:
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 über den Mindestwerten sind Vorschläge, keine Anforderungen: Bemessen Sie sie für die größte Datei, die ein Kunde hochlädt, und den längsten Import, der über den Browser läuft. Ein Tarif kann seine Upload-Grenze als eine seiner Eigenschaften nennen.
Hinweis
open_basedirist auf Shared Hosting verbreitet. Der Installer warnt nur davor (die Einstellung könne wegen Fehlern in einigen PHP-Versionen Probleme beim Betrieb von Exponential verursachen). Wenn Sie es setzen, schließen Sie das Installationsverzeichnis, das temporäre Upload-Verzeichnis und das Verzeichnis von[FileSettings] TemporaryDir(mitgeliefert/tmp/) ein.
Zeitzone
index.php setzt UTC, wenn php.ini kein date.timezone hat; nur in diesem Fall schlägt der Test des Installers
fehl. Eine Website kann auch ihre eigene Zone in settings/site.ini, [TimeZoneSettings] TimeZone, setzen, die der
Kernel bei jeder Anfrage anwendet. Für einen Hoster genügt es, date.timezone in jedem Pool auf die Zone des Servers
(oder UTC) zu setzen; Kunden setzen ihre eigene in den Einstellungen der Website.
Fehleranzeige
Aus Kapitel 13.4: Setzen Sie in der
php.ini von PHP-FPM
display_errors = Off
log_errors = On
expose_php = OffDie Seite Systeminformationen kennzeichnet display_errors als Zustandsproblem. Die eigene Debug-Ausgabe von
Exponential ist ein getrennter Schalter, site.ini [DebugSettings] DebugOutput, der in der Produktion ebenfalls aus
sein muss.
OPcache unter PHP-FPM
Aus Kapitel 10.12:
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.interned_strings_buffer=32
; keep timestamp checks on: Exponential rewrites PHP cache files (INI caches,
; compiled templates, expiry.php) under the same name
opcache.validate_timestamps=1
opcache.revalidate_freq=2Warnung Setzen Sie auf einer Exponential-Website nie
opcache.validate_timestamps=0. Eine Cache-Datei, die nach dem Leeren neu geschrieben wird, würde bis zum Neustart von PHP in ihrer alten Form ausgeliefert. Hoster, die Zeitstempelprüfungen der Geschwindigkeit wegen global abschalten, müssen Exponential-Pools ausnehmen. Mehr in OPcache.
Funktionen, die manche Funktionen aufrufen
Hoster führen oft Funktionen in disable_functions auf. Diese Funktionen von Exponential rufen PHP-Funktionen auf, die
häufig auf solchen Listen stehen; die Website läuft ohne sie weiter, aber die Funktion arbeitet nicht:
| Funktion | Genutzt von | Ohne sie | Quelle |
|---|---|---|---|
system | dem ImageMagick-Konverter (eZImageShellFactory) | ImageMagick-Konvertierungen schlagen fehl; GD funktioniert weiter | lib/ezimage/classes/ezimageshellhandler.php, settings/image.ini [ImageMagick] |
proc_open | Setup > Cronjobs: einen Job aus der Administration starten | die Seite sagt es; führen Sie Cron aus einer Shell aus | Anleitung zu Cronjobs |
exec | Setup > Cronjobs: die Crontab lesen | die Seite sagt, welche Funktion fehlt | Anleitung zu Cronjobs |
posix_kill | Setup > Cronjobs: Laufenden Job anhalten | die Schaltfläche kann keinen Job anhalten | Anleitung zu Cronjobs |
opcache_get_status | Setup > Systeminformationen: OPcache-Kennzahlen | der Cache funktioniert; nur seine Kennzahlen werden nicht gezeigt | Systeminformationen |
pcntl_fork | asynchrones Veröffentlichen (bin/php/ezasynchronouspublisher.php) | asynchrones Veröffentlichen ist nicht verfügbar | composer.json schlägt ext-pcntl vor |
Ein PHP der Kommandozeile für Cron und Velocity hat meist eine eigene php.ini ohne eine solche Liste; prüfen Sie mit
php --ini.
Zeitlimits
max_execution_timebegrenzt die eigene CPU-Zeit von PHP; unter PHP-FPM ist die harte Grenze einer Anfrage dasrequest_terminate_timeoutdes Pools (aus, wenn nicht gesetzt) (Kapitel 9.2).- Halten Sie mit SQLite
[DatabaseSettings] SQLiteTransactionWait(mitgeliefert 25 Sekunden) unter dem Zeitlimit der Anfrage, sonst wird ein wartender Schreiber beendet, bevor der Treiber berichten kann (SQLite für Hoster). - Der Konfigurationsschritt des Setup-Assistenten kann auf MongoDB ein bis drei Minuten dauern; erhöhen Sie
request_terminate_timeoutfür diese Installation oder nutzen Sie die Konsole (MongoDB für Hoster). - Sitzungen:
site.ini [Session] SessionTimeout(mitgeliefert31104000Sekunden, 360 Tage) überschreibtsession.gc_maxlifetimebeim eigenen Session-Handler von PHP.
Velocity und FrankenPHP
Velocity führt PHP als Kommandozeilenprozesse aus und übergibt seine eigenen Optionen aus settings/velocity.ini,
[PHPSettings] IniOptions[]. Die mitgelieferte Liste schaltet OPcache für die Kommandozeile ein
(opcache.enable_cli=1), setzt memory_consumption=256, max_accelerated_files=20000, interned_strings_buffer=32,
opcache.revalidate_freq=0, opcache.file_update_protection=0 und apc.shm_size=256M. Die beiden OPcache-Werte
weichen absichtlich von PHP-FPM ab: Ein Velocity-Worker ist eine lange Anfrage, und mit den Werten von PHP-FPM würde er
weiter veraltete Cache-Dateien ausliefern (Kapitel 10.12). Schreiben
Sie Änderungen in settings/override/velocity.ini.append.php, nie in die mitgelieferte Datei.
FrankenPHP liest keine php.ini der Maschine. settings/velocity.ini, [FrankenPHPSettings] IniOptions[] liefert
display_errors=Off, log_errors=On, memory_limit=512M, opcache.enable=1, post_max_size=64M und
upload_max_filesize=32M mit; PHPIniFile nennt stattdessen eine eigene php.ini
(Kapitel 8.4).
Eine Änderung anwenden
Nachdem Sie php.ini oder einen Pool bearbeitet haben, 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 vielleicht andere. Eine Änderung, die „nicht wirkt“, ist meist eine Änderung an der Datei, die
das andere PHP liest.
Checkliste
- To do:
memory_limit256M oder mehr für Produktions-Pools (64M ist nur die Untergrenze des Installers). - To do:
max_execution_time,date.timezone,file_uploads,allow_url_fopenundvariables_ordergesetzt. - To do: Upload-Grenzen im Tarif genannt und im Pool gesetzt.
- To do:
display_errors=Off,log_errors=On,expose_php=Off. - To do: OPcache an, mit eingeschalteten Zeitstempelprüfungen.
- To do:
disable_functionsanhand der Tabelle oben geprüft. - To do: Einstellungen von Velocity und FrankenPHP nur in
settings/override/velocity.ini.append.phpgeändert.
Verwandte Seiten
- PHP-Versionen und Erweiterungen
- Abstimmung von PHP-FPM und OPcache
- PHP-Auswahl und FPM-Pools
- Kapitel 2.5: php.ini-Einstellungen
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
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.