Umgebungsvariablen
Diese Seite listet die Umgebungsvariablen auf, die Exponential 6 liest, was jede bewirkt und wer sie setzt. Sie richtet sich an Administratoren, Hoster und Entwickler, die einen Server, einen Container oder eine Deployment-Pipeline konfigurieren.
Warnung
.htaccessbremst jede Anfrage. Sind.htaccess-Dateien erlaubt (AllowOverridealles außerNone), 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 Noneim 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 auchstaticcache_offload.conf), setzen SieAllowOverride None, führen Sieapachectl configtestaus, 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.
Exponential wird über seine INI-Dateien (settings/) konfiguriert und, für einige Dinge, die bekannt sein müssen,
bevor die Einstellungen gelesen werden, über Konstanten in config.php und config.env.php (EXP_ENV,
EZP_INI_FILEMTIME_CHECK und ähnliche). Umgebungsvariablen werden dort verwendet, wo die Einstellung zu einem
Serverprozess gehören muss und niemals mit einer Kopie der Einstellungen mitwandern darf: der Demo-Modus, das
Engine-Archiv, Passwörter, die einem Installer übergeben werden, und Werte, die ein Befehl an die von ihm gestarteten
Prozesse weitergibt.
PHP liest eine Umgebungsvariable mit getenv(). Unter PHP-FPM liefert das auch die FastCGI-Parameter der Anfrage
(env[...] im Pool, SetEnv in Apache mit mod_proxy_fcgi, fastcgi_param in nginx); unter Apache mit mod_php und
LiteSpeed mit lsphp kommt ein SetEnv auf dieselbe Weise an. Persistente Worker (Exponential Velocity, FrankenPHP)
erben beim Start die Umgebung des Serverprozesses.
Inhalt
- Variablen, die Sie setzen
- Variablen, die Exponential für seine eigenen Prozesse setzt
- Konstanten, die keine Umgebungsvariablen sind
- Wo eine Umgebungsvariable gesetzt wird
- Verwandte Seiten
Variablen, die Sie setzen
| Variable | Werte | Was sie bewirkt | Gelesen von |
|---|---|---|---|
EXP_DEMO_MODE | 1 (genau) | Demo-Modus für eine öffentliche Demo: Administratorpasswörter können auf keinem Weg geändert oder zurückgesetzt werden, die Installer akzeptieren ein bekanntes oder kurzes Administratorpasswort (publish, publishing; nie ein leeres), die Administration zeigt ein Banner, und jeder Prozess vermerkt demo/mode in security.log und system.demo.mode im Audit. Jeder andere Wert oder gar keiner lässt ihn ausgeschaltet. Wird bei jedem Aufruf gelesen (getenv(), dann $_SERVER); nie aus einer INI-Datei oder einer Anfrage. Unter Velocity nie aus der gemeinsamen /etc/vc/envvars (verwenden Sie die Site-envvars). Setzen Sie ihn nie für eine echte Site. Demo-Modus | expDemoMode (kernel/classes/expdemomode.php) |
EXP_ENGINE_PHAR | der Pfad eines Engine-Archivs | Führt die Kernel- und Bibliotheksklassen aus diesem Archiv statt aus den Dateien auf der Festplatte aus (nur wenn die Datei existiert). exp:velocity setzt sie für die von ihm gestarteten Server, wenn ein Archiv konfiguriert ist. Velocity-Engines | autoload.php, expVelocity |
EXP_INSTALL_DB_PASSWORD | ein Passwort | Das Datenbankpasswort für exp:install, wenn --db-password nicht angegeben ist, damit es weder in der Prozessliste noch in der Shell-Historie erscheint. Kapitel 7 | bin/php/install.php |
EXP_KICKSTART_LOG | 0 | 0 schaltet var/log/kickstart.log von exp:kickstarter run ab. Kapitel 6 | der Kickstarter |
EXP_BENCHMARK_AUTH | user:password | HTTP-Basic-Authentifizierung für exp:benchmark, wenn --auth nicht angegeben ist | der Benchmark-Befehl |
EXP_MONGO_TRACE | ein Dateipfad | Schreibt jede MongoDB-Anweisung vor ihrer Ausführung in diese Datei, um eine Anweisung zu finden, die nie zurückkehrt. Nicht gesetzt, ist sie aus und kostet nichts | der MongoDB-Treiber (lib/ezdb/classes/expmongodb.php) |
EXP_SETUP_LOG_DIR | ein Verzeichnis | Wo setup.log und der Zustand des Web-Setups statt in var/log abgelegt werden (die Tests verwenden es, damit sie nie das Log einer echten Installation rotieren) | expSetupLog |
PHP_CLI_SERVER_WORKERS | eine Zahl | PHPs eigene Variable: die Worker des eingebauten Webservers von PHP, den die php-Engine von Velocity verwendet | PHP; angezeigt unter Setup > Systeminformationen |
Variablen, die Exponential für seine eigenen Prozesse setzt
Diese werden von einem Exponential-Befehl für einen Prozess gesetzt, den er startet. Setzen Sie sie nicht selbst.
| Variable | Gesetzt von | Bedeutung |
|---|---|---|
EXP_SETUP_RUN | dem Setup, für die Befehle, die es ausführt | die Befehle arbeiten mit den Einstellungen, wie sie vor der Installation sind; das Audit schlägt den Benutzer nicht nach |
EXP_KICKSTART_LOG_CHILD | exp:kickstarter run | der Lauf ist der protokollierte Kindprozess |
EXP_PRELOAD_DETACHED, EXP_PRELOAD_ERRORS | dem Hintergrundjob des Preloaders | der Job läuft losgelöst; wohin seine Fehler gehen |
EXP_PHAR_REEXEC | exp:phar build | der Build hat sich selbst mit abgeschaltetem phar.readonly erneut gestartet |
EXP_VELOCITY_ENGINE, EXP_VELOCITY_ROOT, EXP_VELOCITY_STATIC_PATHS, EXP_VELOCITY_NEVER_STATIC, EXP_VELOCITY_FOLLOW_SYMLINKS | exp:velocity für die Engines php und frankenphp | der Name der Engine, das Document Root und welche Dateien unverändert ausgeliefert werden |
Konstanten, die keine Umgebungsvariablen sind
EXP_ENV (der Name der Umgebung, config.env.php), EZP_INI_FILEMTIME_CHECK, EZP_DIR_MODE_MAX,
EZP_FILE_MODE_MAX und die anderen EZP_*- / EXP_*-Namen in config.php-RECOMMENDED und config.env.php.example
sind PHP-Konstanten, die in diesen Dateien definiert werden. Eine gleichnamige Umgebungsvariable zu setzen, bewirkt
nichts. Umgekehrt gilt für EXP_DEMO_MODE: Eine gleichnamige Konstante in config.php zu definieren, bewirkt nichts;
der Demo-Modus kommt nur aus der Umgebung.
Die beiden Dateien haben unterschiedliche Aufgaben. config.env.php enthält nur, was sich je Maschine unterscheidet,
den Namen der Umgebung EXP_ENV; sie wird von Hand aus config.env.php.example kopiert und von der Konsole nicht
angefasst. config.php enthält die Konstanten der Installation (Dateimodi, INI-Prüfungen, Cluster-Speicher,
Log-Rotation); sie wird mit ./console exp:setup:config --apply an ihren Platz gebracht und mit
./console exp:config:list, exp:config:get, exp:config:set und exp:config:unset gelesen und geändert. Um einen
Wert aus einer Umgebungsvariablen in config.php zu übernehmen, setzen Sie ihn beim Deployment oder beim Start des
Containers: ./console exp:config:set CLUSTER_STORAGE_HOST "$CLUSTER_DB_HOST" --apply. Siehe
.htaccess und config.php von der Konsole aus einrichten.
Wo eine Umgebungsvariable gesetzt wird
| Wo PHP läuft | Wie |
|---|---|
Apache (mod_php oder PHP-FPM über mod_proxy_fcgi) | SetEnv NAME value im virtuellen Host oder in der .htaccess der Site (mod_env) |
LiteSpeed / OpenLiteSpeed mit lsphp | SetEnv in .htaccess (LiteSpeed liest sie wie Apache) oder die Umgebung des virtuellen Hosts |
| PHP-FPM | env[NAME] = value im Pool der Site, dann den Master dieses Pools neu laden |
| nginx mit PHP-FPM | fastcgi_param NAME value; dort, wo Anfragen an PHP-FPM übergeben werden, oder der Pool |
| Exponential Velocity | export NAME=value in /etc/vc/envvars: Der Server liest die Datei bei jedem Start und exportiert, was sie setzt, in seine eigene Umgebung, bevor er forkt, sodass jeder Worker es sieht und ein Neustart oder Deploy aus einer beliebigen Shell es behält. Die Umgebung des Prozesses, der exp:velocity start ausführt (Environment= in seiner systemd-Unit oder einem Drop-in, oder export in der Shell), hat Vorrang vor der Datei. /etc/vc/envvars liest der Server jeder Installation auf dem Host; eine Variable nur für eine Installation gehört in ihre Site-envvars, /etc/vc/sites-available/<site>.envvars, die exp:velocity start nur an den Server dieser Installation übergibt und die Vorrang vor beiden hat. EXP_DEMO_MODE wird nur von dort (oder aus der Startumgebung) übernommen: Ein Worker weist es aus der gemeinsamen Datei zurück. Die Dateien werden gelesen, nie ausgeführt, und weisen PATH, LD_*, DYLD_*, MALLOC_*, HTTP_*, PHPRC, PHP_INI_SCAN_DIR, GLIBC_TUNABLES, HOME, USER und die anderen Namen zurück, die in der Verzeichnisstruktur aufgeführt sind |
| Cron | eine Zeile NAME=value am Anfang der Crontab |
| Konsole | export NAME=value oder NAME=value command für einen einzelnen Befehl |
| Container | ENV im Image, -e, --env-file oder environment: / env_file: für einen Dienst |
Beispiele für den Demo-Modus, eines pro Ort: Beispiele zum Demo-Modus.
Verwandte Seiten
- Demo-Modus, FAQ zum Demo-Modus
- Kapitel 2: Voraussetzungen, Kapitel 13: Sicherheitshärtung
- Velocity-Engines
- .htaccess und config.php von der Konsole aus einrichten:
config.phpvon der Kommandozeile
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.