Alle Konstanten stehen in manage-client/config.php, kopiert aus
manage-client/config.sample.php. Jede Konstante hat einen Standardwert in
manage-client/lib/client.php; eine minimale config.php braucht nur die drei
Verbindungswerte und MANAGE_BACKUP_SOURCES.
Konstanten werden mit define() gesetzt, nicht als Array. Wird eine Konstante
bereits vom Projekt definiert, gewinnt der Wert des Projekts.
| Konstante | Standard | Bedeutung |
|---|---|---|
MANAGE_SERVER_URL |
"" |
Basis-URL des Manage-Servers, ohne /api und ohne Schrägstrich am Ende |
MANAGE_INSTANCE |
"" |
Kennung der Instanz, wie auf dem Server angelegt |
MANAGE_TOKEN |
"" |
Geheimes Token der Instanz, einmalig beim Anlegen angezeigt |
MANAGE_HTTP_TIMEOUT |
15 |
Sekunden für Manifest und Heartbeat |
MANAGE_HTTP_TIMEOUT_LONG |
300 |
Sekunden für Paket-Download und Backup-Upload |
Fehlt einer der ersten drei Werte, melden alle Funktionen mit Serverkontakt einen
Konfigurationsfehler. Lokale Backups funktionieren trotzdem, sofern
MANAGE_BACKUP_UPLOAD auf false steht.
| Konstante | Standard | Bedeutung |
|---|---|---|
MANAGE_APP_ROOT |
Elternverzeichnis von manage-client/ |
Wurzel der Anwendung. Ziel des Updates, Basis aller relativen Backup-Pfade |
MANAGE_VERSION_FILE |
MANAGE_APP_ROOT . "/VERSION" |
Datei mit der installierten Version |
MANAGE_VERSION_CONSTANT |
null |
Name der Konstante in dieser Datei, oder null für eine reine Textdatei |
MANAGE_WORK_DIR |
data/manage/work/ |
Arbeitsverzeichnis für Updates, wird nach jedem Lauf geleert |
MANAGE_UPDATE_BACKUP_DIR |
data/manage/updates/ |
Sicherungskopien der überschriebenen Dateien |
MANAGE_BACKUP_DIR |
data/manage/backups/ |
Lokale Backup-Archive |
MANAGE_LOG_FILE |
data/manage/manage-client.log |
JSONL-Protokoll des Clients |
Zwei Varianten werden unterstützt.
PHP-Datei mit Konstante (wie im PSA-Bestellsystem):
define("MANAGE_VERSION_FILE", MANAGE_APP_ROOT . "/includes/version.php");
define("MANAGE_VERSION_CONSTANT", "APP_VERSION");
Reine Textdatei, die nur v1.2.3 enthält:
define("MANAGE_VERSION_FILE", MANAGE_APP_ROOT . "/VERSION");
define("MANAGE_VERSION_CONSTANT", null);
Die Version wird bei der Variante mit Konstante per regulärem Ausdruck aus der Datei gelesen und die Datei dabei nicht ausgeführt. Damit funktioniert das Auslesen auch dann, wenn die Konstante im laufenden Prozess bereits mit dem alten Wert definiert ist – zum Beispiel unmittelbar nach einem Update.
Die Version selbst wird nie vom Client geschrieben: Sie ist Teil des Release-Pakets und ändert sich als Nebeneffekt des Dateikopierens.
| Konstante | Standard | Bedeutung |
|---|---|---|
MANAGE_UPDATE_PROTECTED_PATHS |
["config.php", "data/", ".git/", "manage-client/config.php"] |
Pfade, die nie überschrieben werden |
MANAGE_UPDATE_SANITY_PATHS |
["index.php"] |
Das Paket muss mindestens einen dieser Pfade enthalten |
MANAGE_UPDATE_POST_HOOK |
null |
Callback nach erfolgreichem Update |
MANAGE_MIGRATIONS_DIR |
MANAGE_APP_ROOT . "/migrations" |
Verzeichnis mit Migrationsskripten, null deaktiviert sie |
MANAGE_MIGRATIONS_STATE |
data/manage/migrations.json |
Welche Migrationen bereits gelaufen sind |
Pfade in MANAGE_UPDATE_PROTECTED_PATHS sind relativ zu MANAGE_APP_ROOT. Ein
Eintrag mit Schrägstrich am Ende schützt das Verzeichnis samt Inhalt; ohne
Schrägstrich wird der genaue Pfad geschützt, ein Verzeichnis aber ebenfalls
mitsamt Inhalt. config.php und das Datenverzeichnis gehören immer dazu.
MANAGE_UPDATE_SANITY_PATHS verhindert, dass ein völlig fremdes ZIP über die
Anwendung kopiert wird. Der Wert sollte eine Datei oder ein Verzeichnis benennen,
das in jedem Release enthalten ist.
Hook und Migrationen sind in 07_POST_UPDATE_HOOKS beschrieben.
| Konstante | Standard | Bedeutung |
|---|---|---|
MANAGE_BACKUP_SOURCES |
[["as" => "data", "glob" => "data/*.json"]] |
Was ins Archiv kommt |
MANAGE_BACKUP_DATABASE |
null |
Optionaler MySQL-Dump |
MANAGE_BACKUP_LOCAL_RETENTION |
4 |
Lokale Archive, die behalten werden. Minimum 1 |
MANAGE_BACKUP_AUTO_INTERVAL_SECONDS |
604800 |
Intervall für manageBackupCreateAutomaticIfDue(), 0 deaktiviert |
MANAGE_BACKUP_COMPRESS |
true |
Einträge im ZIP komprimieren (Deflate) |
MANAGE_BACKUP_UPLOAD |
true |
Jedes neue Backup an den Manage-Server senden |
MANAGE_BACKUP_REMOTE_TARGETS |
[] |
Zusätzliche Ziele: s3, sftp, custom |
Aufbau von Quellen und Zielen: 05_BACKUP_SOURCES.
MANAGE_BACKUP_COMPRESS benötigt zlib, das in PHP standardmäßig vorhanden ist.
Fehlt es, wird ohne Kompression geschrieben statt abzubrechen. Für Archive, die
überwiegend aus JPEGs bestehen, bringt Kompression fast nichts; für SQL-Dumps sehr viel.
Die lokale Aufbewahrung ist unabhängig von der Aufbewahrung auf dem Manage-Server. Auf dem Server wird sie zentral in den Servereinstellungen gepflegt, üblicherweise deutlich höher als lokal.
Definiert das Projekt eine Konstante bereits selbst, gewinnt sie, weil config.php
des Clients vor den Standardwerten geladen wird und alle Standardwerte mit
if (!defined(...)) gesetzt sind. So kann ein Projekt seine Pfade zentral
konfigurieren und der Client sie übernehmen.