Zum Inhalt

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

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=*