Startup-Phase¶
Bevor die Alvine-Anwendungsklasse geladen werden kann, müssen einige Vorbereitungen getroffen werden. hierzu zählen das Laden des Alvine-Frameworks, der Environmentvariablen und die Fehlerbehandlung.
Die Steuerung dieser Phase übernimmt die Ignition-Klasse. In den beiden Konfigurationsdateien
assembly.ini (im Systemverzeichnis /default/) und system.ini (im Projektverzeichnis /config/) stehen die
dazu notwendigen Einstellungen. In der assembly.ini stehen die Verwendeten Komponenten und über die
system.ini wird der Startup-Prozess gesteuert.
Der Speicherort der system.ini muss über die Umgebungsvariable ALVINE_CONFIG definiert werden. Dies
kann entweder über den Webserver oder die verwendete Shell erfolgen.
Über additional-components können in der assembly.ini optionale Phar-Archive angegeben werden. Diese können über
Assembly::includeLibrary($name) eingebunden werden.
Dateisystem¶
Die einzelnen Speicherorte der Dateien können von System zu System variieren. Aus diesem Grund
kann man in der system.ini in der Sektion filesystem die Verzeichnisse festlegen.
[filesystem]
; Hier liegt das Standardsystem (readonly)
; Default: /opt/alvine-platform/
basePath=C:\projekte\svn\alvine.application.platform\application
; Phar-Archive, externe Bibliotheken
; Default: /opt/vendor/
vendorPath=C:\projekte\svn\alvine.application.platform\deployment\vendor
Units¶
Die einzelnen Einheiten sind Objekte die in der definierten Reihenfolge erstellt werden und deren
Unit::run() Methode im Anschluß aufgerufen wird.
!!! "note" Wichtig Solange das Alvine Framework noch nicht geladen wurde, können in den Units nur PHP-Core-Funktionen verwendet werden.
DisableStaticResource¶
Diese Einheit ist für die Verwendung mit dem in den PHP-Interpreters integrierten Webservers gedacht. hierzu
werden nur PHP-Resourcen verarbeitet und bei allen anderen Anfragen return false zurückgeliefert. Das false sorgt
dafür, das der interne Webserver von PHP die Resource
statisch ausliefert.
Wird diese Einheit bei nginx oder apache verwendet, so liefert Sie den Status 404 Fehler zurück.
Diese Einheit besitzt in der system.ini keinen weiteren Konfigurationsblock.
Dummy¶
Diese Einheit exitiert für das Testing und debugging. Die Dummy::run() Methode zählt alle aufrufe
und stellt die Anzahl der Aufrufe in der Dummy::isCalled() bereit.
FlushLogger¶
Die FlushLogger Einheit ruft die Methode \Alvine\Util\Logging\Logger::flush() auf.
Diese Einheit besitzt in der system.ini keinen weiteren Konfigurationsblock.
InitLegacyConstants¶
Im Legacy-System wird mit einer Vielzahl von Konstanten gearbeitet, diese können über diese Einheit definiert und angelegt werden.
Die zu definierenden Konstanten werden im Abschnitt InitLegacyConstants als Schlüssel-/Wertpaare angelegt.
[InitLegacyConstants]
ALVINE_LEGACY_APPLICATIN_BASE_PATH=/opt/alvine-platform
ALVINE_LEGACY_APPLICATIN_BASE_WEB_ABSOLUTE_PATH=/srv/www
Die definierten Schlüssel werden als Konstante definiert. dazu wird der Schlüssel und der Wert an die Methode \define() übergeben.
IncludeComponents¶
Diese Einheit bindet die Alvine-Komponenten als Phar-Archive ein. Die einzubindenden Komponenten werden im Abschnitt
components in der assembly.ini definiert.
; Komponenten die eingebunden werden sollen
[components]
component[] = alvine.framework-snapshot.phar
component[] = alvine.application-snapshot.phar
Die Dateien werden im Vendorverzeichnis im Unterordner alvine erwartet.
IncludeComponentsSource¶
Die IncludeComponentsSource-Einheit hilft bei der Entwicklung von Komponenten und Anwendungen. Sie ermglicht es die
Alvine-Komponenten als Quelltext und nicht als Phar einzubinden. Die einzubindenden Komponenten werden im Abschnitt
components in der assembly.ini definiert. In der Einheit wird der -snapshot.phar Teil entfernt und die bootstrap.inc.php
der Komponente eingebunden.
; Komponenten die eingebunden werden sollen
[components]
component[] = alvine.framework-snapshot.phar
component[] = alvine.application-snapshot.phar
Der Pfad der Projekte wird über den Schlüssel path in der Sektion IncludeComponentsSource definiert
[IncludeComponentsSource]
; Pfad in dem die ausgecheckten Repos liegen
path=C:\projekte\svn\
InitCliAssemblyAndExecute¶
Die Einheit InitCliAssemblyAndExecute erstellt eine Instanz der Assembl-Klasse und initialisiert die Anwendung. In der
system.ini muss diese Einheit auf cli beschränkt werden.
; CLI Anwendung im Kontext CLI ausführen
InitCliAssemblyAndExecute=cli
Über die Sektion InitCliAssemblyAndExecute muss der Name der Anwendungsklasse definiert werden. Über den Schlüssel directories
können Verzeichnisse definiert werden, in denen Eigenschaftdateien liegen. Diese Dateien werden dann eingelesen und überschreiben die Werte
aus der Default assemply.properties
[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
InitEnvironmentFromEnv¶
Diese Einheit liesst die externe Datei env.php ein. env.php muss in dem
über den path Schlüssel definierten Verzeichnis liegen. In der env-Datei
können Umgebungsvariablen definiert werden. Dies kann zum Beispiel auf Benutzerebene
passieren, indem der Pfad relativ zum Benutzerverzeichnis angegeben wird. ~/alvine-platform.
!!! "warn" "Hinweis"
Passwörter die über die diesen Weg angelegt werden, werden in Logausgaben des
Startsystems maskiert und nicht ausgegeben. Man kann dies auch manuell ereichen, indem
man die Umgebungsvariable mit dem Prefix ALVINE_PWD_ versieht.
Im Abschnitt InitEnvironmentFromEnv muss der Schlüssel path mit dem Pfad zur env.php angegeben werden.
[InitEnvironmentFromEnv]
; Pfad in dem die env.php liegt
; Diese Datei kann spezielle Environment-Daten enthalten
path=C:\projekte\etc\
Beispielaufbau der Dateien env.php und password.php:
<?php
/**
* Werte setzen
*
* @param string $key
* @param string $value
*
* @return void
*/
function setAlvineDevelopmentEnvironment(string $key, string $value): void {
\putenv($key . '=' . $value);
$_ENV[$key] = $value;
}
$localCredentialArray = [];
// Passwortdatei einbinden; Passwörter müssen in der Variable localCredentialArray stehen
include __DIR__ . DIRECTORY_SEPARATOR . 'passwd.php';
/**
* Environment zuweisen
*/
if (isset($localCredentialArray) && \is_array($localCredentialArray)) {
foreach ($localCredentialArray as $k => $v) {
\setAlvineDevelopmentEnvironment($key = 'ALVINE_PWD_' . \strtoupper($k), $v);
}
}
/** Zugriff auf das ADS */
setAlvineDevelopmentEnvironment('SERVER_URI', 'http://example.com');
setAlvineDevelopmentEnvironment('LOGLEVEL', 'ALL');
Die Passwörter sollten in der Passwortdatei stehen.
<?php
$localCredentialArray['service1_user'] = 'me';
$localCredentialArray['service1_password'] = 'geheim';
InitErrorReportingAndDebugging¶
Mit Hilfe der InitErrorReportingAndDebugging können die PHP-Einstellungen
für die Fehlerausgabe und das Opcache gesteuert werden. Die Detailkonfiguration erfolgt
über den Abschnitt InitErrorReportingAndDebugging.
!!! "warn" "Sicherheitshinweis" Diese Einheit sollte immer auf bestimmte IP-Adressen beschränkt werden und einen Parameter oder Cookie zur Steuerung verwenden.
[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=32767
; 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
InitWebAssemblyAndExecute¶
Die Einheit InitWebAssemblyAndExecute erstellt eine Instanz der Assembly-Klasse und initialisiert die Anwendung. In der
system.ini muss diese Einheit auf http beschränkt werden.
; CLI Anwendung im Kontext CLI ausführen
InitWebAssemblyAndExecute=http
Über die Sektion InitWebAssemblyAndExecute muss der Name der Anwendungsklasse definiert werden. Über den Schlüssel directories
können Verzeichnisse definiert werden, in denen Eigenschaftdateien liegen. Diese Dateien werden dann eingelesen und überschreiben die Werte
aus der Default assemply.properties
[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
RegisterApplicationNamespace¶
Die Einheit RegisterApplicationNamespace registriert den Anwendungsnamespace.
Diese Einheit besitzt in der system.ini keinen weiteren Konfigurationsblock.
RegisterCustomisationNamespaces¶
Die Einheit RegisterCustomisationNamespaces registriert einen projektspezifischen Namespace. Im Abschnitt
RegisterCustomisationNamespaces müssen die Namespaces angegeben werden. Die Source-Dateien der Klasse müssen im
CustomisationVerzeichnis im zum Namespace gehörenden Unterverzeichnis liegen.
[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
ResolveHttpContentTypeMapping¶
Diese Einheit kommt nur bei fehlendem $_SERVER['HTTP_CONTENT_TYPE'] Wert zum Einsatz.
Alvine erwartet den Content-Type im Feld $_SERVER['HTTP_CONTENT_TYPE']. Einige Installationen
bieten aber nur die Variable $_SERVER['CONTENT_TYPE'] an. Diese Einheit kopiert den Inhalt von CONTENT_TYPE
nach HTTP_CONTENT_TYPE.
Diese Einheit besitzt in der system.ini keinen weiteren Konfigurationsblock.
RunExternals¶
RunExternals erlaubt es beliebige externe Datein in den Startprozess zu integrieren. Der Pfad der externen Dateien
wird im Abschnitt RunExternals im Schlüssel path angegeben.
[RunExternals]
; Externe Scripte in den Startupprozess integrieren
path[]=/usr/alvine-platform/example.php
SendAccessControlAllowOrigin¶
Die Einheit SendAccessControlAllowOrigin sendet den im Abschnitt SendAccessControlAllowOrigin definierten Wert value als Wert
für den Access-Control-Allow-Origin-Header.
Wird kein Wert angegeben, so wird kein Header gesendet.
[SendAccessControlAllowOrigin]
; Wird kein Wert angegeben, so wird kein header gesendet
value=*