system.ini¶
Die system.ini
ist die zentrale Steuerdatei im Ini-Format
zur Konfiguration des Ignition Prozesses und der zu startenden Anwendung.
Abschnitte¶
Die Konfiguration ist in Abschnitte aufgeteilt.
filesystem¶
Im filesystem
Abschnitt werden die Pfade zu den einzelnen Speicherorten festgelegt und definiert.
Im wesentlichen wird versucht die Standardstruktur von Unix zu verwenden.
; Hier liegt das Standardsystem (readonly)
; Default: /opt/new-project/
basePath=/opt/new-project/
; Phar-Archive, externe Bibliotheken
; Default: /opt/vendor/
vendorPath=/opt/vendor/
; Kunden- und Projektspezifische Dateien
; Default: /var/new-project/
dataPath=/var/new-project/
; Unter diesem Pfad liegt kunden- und
; projektspezifizische Code
; Default: /var/new-project/
customisationPath=/var/new-project/
; Logging und Debugging
; Default: /var/log/new-project/
logPath=/var/log/new-project/
; Konfigurationsdateien (Routen, Zugangsdaten)
; Default: /etc/new-project/
configPath=/etc/new-project/
; Temporäre Dateien
; Default: /tmp/new-project/
tempPath=/tmp/new-project/
; Für Webanwendungen liegen hier die
; über HTTP aufrufbare Dateien
; Default: /srv/new-project/
webPath=/srv/new-project/
!!! "note" Hinweis Der webPath muss bei reinen CLI-Anwendungen nicht gesetzt werden.
units¶
Im units
Abschnitt werden die Namen und die Reihenfolge der durchzuführenden
Schritte spezifiziert. Die Namen der einzelnen Einheiten (Units) werden als Schlüssel angegeben.
Der Name der Einheit ist identisch mit dem Klassennamen der entsprechenden Einheit. Der Schlüssel
SendAccessControlAllowOrigin
gehört so zur Klasse \Alvine\Dispatcher\Unit\SendAccessControlAllowOrigin
.
Der Wert entspricht den API in denen die Unit ausgeführt werden soll. Wird als Wert ein Stern *
notiert,
so wird die Einheit auf allen API ausgeführt. Der Wert http
steht für alle Web-APIs und cli
für alle Konsolen-Anwendungen. Ausserdem können alle spezifischen
SAPI-Namen als Kommaliste angegeben werden. Mögliche Werte sind unter anderem aolserver
, apache
, apache2filter
,
apache2handler
, caudium
, cgi
(bis PHP 5.3), cgi-fcgi
, cli
, cli-server
, continuity
,
embed
, fpm-fcgi
, isapi
, litespeed
, milter
, nsapi
, phttpd
, pi3web
, roxen
, thttpd
,
tux
und webjames
.
Die Werte können per Komma getrennt angegeben werden. So kann die Ausführung einer Unit auf Apache, FPM und
isapi mit folgendem Wert eingeschränkt werden: apache,fpm-fcgi,isapi
Die Werte müssen so, wie von der Methode \php_sapi_name()
zurückgegeben, angegeben werden.
Hinweis
Eigene Units müssen im Namespace \Alvine\Dispatcher\Unit\
angelegt und von der Klasse \Alvine\Dispatcher\Unit
abgeleitet sein. Außerdem muss die Klasse in per include eingebunden werden, da der Autoloader zu diesem Zeitpunkt
noch nicht läuft.
Standardeinheiten¶
Jede Einheit kann eigene Konfigurationen besitzen die in einem Abschnitt mit identischem Namen definiert werden. So verfügt
die Einheit \Alvine\Dispatcher\Unit\SendAccessControlAllowOrigin
über einen Konfigurationsabschnitt mit dem Namen
[SendAccessControlAllowOrigin]
.
RunExternals¶
Diese Einheit führt eine beliebige PHP-Datei aus. Die Ausführung des Script erfolgt in einem Closure.
[RunExternals]
; Externe Scripte in den Startupprozess integrieren
path[]= ~/projekte/svn/alvine.application.platform/development/environment/alvine-platform/ignition/example.php
InitLegacyConstants¶
Mit dieser Einheit können Konstanten festgelegt werden, die in der Anwendung zur Verfügung steht.
[InitLegacyConstants]
; Zuweisung von Konstanten zu einem bestimmten Wert.
MY_CONST_VARIABLE=value
RegisterApplicationNamespace¶
Mit dieser Einheit kann der Namespace registriert werden.
[RegisterApplicationNamespace]
; Namespace der Anwendung
namespace=\Alvine\Application\Platform
RegisterCustomisationNamespaces¶
Mit dieser Einheit kann ein eigener Namespace registriert werden.
[RegisterCustomisationNamespaces]
; Diese Namespaces werden registeriert
; Die Dateien müssen im Verzeichnis customissation
; aus der filesystem-Sektion liegen
; Der Namespace kann beliebig gewählt werden.
namespace[]=\Customisation
; namespace[]=\Customisation2
RewriteRequestURI¶
Mit Hilfe dieser Einheit kann die REQUEST-URI umgeschrieben werden. Dies ist zum Beispiel
bei Systemen in denen eine index.php angegeben wurde sinnvoll. Dazu muss man ein pattern
definieren, dass dann mit dem Wert aus replace
ersetzt wird.
Als Trennzeichen für den Regex kommt das ~
-Zeichen zum Einsatz.
[RewriteRequestURI]
; Regex-Pattern
pattern=^/index.php
; Ersetzung
replace=/
InitCliAssemblyAndExecute¶
Diese Einheit initialisert die Anwendungsklasse und startet die Anwendung.
[InitCliAssemblyAndExecute]
; Der Namespace muss vorher über
; RegisterApplicationNamespace oder
; RegisterCustomisationNamespaces registriert
; worden sein
class=\Alvine\Application\Platform\Command
; Verzeichnisse, in denen nach Konfigurationswerten gesucht wird.
; Die Verzeichnisse müssen Unterverzeichnisse von config sein.
; Die einzelnen Verzeichnisse werden in der Reihenfolge wie hier
; aufgeführt ausgewertet. Die Dateien im Verzeichnis werden nach
; dem Dateinamen sortiert und in dieser Reihenfolge ausgewertet.
directories=generally,cli
; Soll der Cache deaktiviert werden
; Diese Einstellung sollte mit Vorsicht geändert werden
; Bei deaktivertem Cache wird die Performance enorm beeinträchtigt.
disableCache=false
InitWebAssemblyAndExecute¶
Diese Einheit initialisert die Anwendungsklasse und startet die Anwendung.
[InitWebAssemblyAndExecute]
; Der Namespace muss vorher über
; RegisterApplicationNamespace oder
; RegisterCustomisationNamespaces registriert
; worden sein
class=\Alvine\Application\Platform\Web
; Verzeichnisse, in denen nach Konfigurationswerten gesucht wird.
; Die Verzeichnisse müssen Unterverzeichnisse von config sein.
; Die einzelnen Verzeichnisse werden in der Reihenfolge wie hier
; aufgeführt ausgewertet. Die Dateien im Verzeichnis werden nach
; dem Dateinamen sortiert und in dieser Reihenfolge ausgewertet.
directories=generally,http
; Soll der Cache deaktiviert werden
; Diese Einstellung sollte mit Vorsicht geändert werden
; Bei deaktivertem Cache wird die Performance enorm beeinträchtigt.
disableCache=false
InitErrorReportingAndDebugging¶
Mit dieser Einheit kann das Verhalten im Fehlerfall definiert werden.
[InitErrorReportingAndDebugging]
; Entwickeln und/oder Debugging der Anwendung über die HTTP-Schnittstelle
; Wenn die Anwendung im Debug-Modus ist, wird der Cache deaktiviert und
; es werden mehr Informationen ausgegeben.
; Anzeigen der PHP Fehlermeldungen. Die Codes sind hier zu entnehmen:
; http://php.net/manual/de/errorfunc.constants.php
; 32767 sind alle Meldungen; 0 Keine Meldungen
errorReportingLevel=0
; Sollen PHP-Fehlermeldungen angezeigt werden
displayErrors=true
; Soll der Opcache während des Debuggings geleert werden
; Wichtig: Diese Einstellung kann große Auswirungen auf die
; Performance haben.
; Funktioniert nur, wenn in PHP Opcache aktiviert ist
clearOpcache=false
; Die Debug-Funktion ist auf die hier aufgeführten IP-Adressen
; beschränkt. Wichtig bei der Verwendung von Proxies: Die IP-Adresse
; des Clients muss weitergereicht werden. Folgende Felder werden
; ausgewertet: X-Forwarded-For
; Die IP-Adresse kann IPV4 oder IPV6 sein
; werden keine IP-Adressen angegeben, so arbeiten
; die Einstellungen für alle Adressen.
limitToIP[]=::1
limitToIP[]=127.0.0.1
;limitToIP[]=
; Wird kein Cookie oder kein Parameter definiert, so
; Wird bei allen IP-Adressen das Debugging eingeschalten.
; Name des Cookies, der die Anwendung
; in den Debug-Modus schaltet.
enableByCookie=
; Name des Parameters, der die Anwendung
; in den Debug-Modus schaltet.
enableByParameter=debug
IncludeComponents¶
Diese Einheit bindet alle in der assembly.ini im Abschnit components
definierten
Phars über das phar://
Protokoll ein. Die Konponenten werden dabei im Vendor-Verzeichnis gesucht.
;[IncludeComponents]
; Pfad in dem die Phars liegen
path=/opt/vendor/phars
InitEnvironmentFromEnv¶
Diese Einheit bindet eine PHP-Datei ein.
[InitEnvironmentFromEnv]
; Pfad in dem die env.php liegt
; Diese Datei kann spezielle Environment-Daten enthalten
path=/etc/env.php
Die eingebundene PHP Datei sollte Umgebungsvariablen für die Anwendung definieren, kann aber auch andere
Aufgaben wahrnehmen. Die folgende Datei /etc/env.php
ist ein Beispiel für eine Datei zum detzen der
Umgebungsvariable.
<?php
function setAlvineDevelopmentEnvironment(string $key, string $value): void {
\putenv($key . '=' . $value);
$_ENV[$key] = $value;
}
setAlvineDevelopmentEnvironment('MONGODB_URI', 'mongodb://127.0.0.1:27017');
setAlvineDevelopmentEnvironment('REDIS_URI', 'redis://127.0.0.1:6379');
setAlvineDevelopmentEnvironment('LOGLEVEL', 'ALL');
SendAccessControlAllowOrigin¶
Diese Einheit sendet bei http-Anfragen den Access-Control-Allow-Origin
mit dem angegebenen Wert.
[SendAccessControlAllowOrigin]
; Wird kein Wert angegeben, so wird kein header gesendet
value=*