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_APPLICATION_BASE_PATH=/opt/alvine-platform
ALVINE_LEGACY_APPLICATION_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=*