CONFIG_REFERENCE.md 5.9 KB

Config Reference (config.php)

config.php wird nicht versioniert. Vorlage: config.sample.php (auf dem Server nach config.php kopieren und anpassen).

Relevante Konstanten

Konstante Zweck
SITE_NAME Primärer Markenname in Oberfläche und Mails
SITE_SERVICE_NAME Servicename für Fließtexte, Betreffzeilen und textliche Verweise
SITE_SERVICE_HEADER Service-Bezeichnung für Header, Seitentitel und sichtbare Überschriften
SITE_DEPARTMENT_NAME Fachbereichskennzeichnung für Footer und Kommunikation
SITE_ADDRESS_LINE Postanschrift des verantwortlichen Amts im Footer
SITE_IMPRINT_URL Ziel-URL für den Impressumslink
SITE_PRIVACY_URL Ziel-URL für den Datenschutzlink
SITE_FULL_NAME Kombinierter Anzeigename aus Marke und Service-Header
SITE_URL Basispfad oder Basis-URL für Links und Assets
SITE_CANONICAL_ORIGIN Optional: https://hostname (ohne Pfad) für absolute E-Mail-Links, falls HTTP_HOST unzuverlässig ist
ADMIN_LOGIN_RATE_LIMIT_MAX Optional: max. fehlgeschlagene Admin-Logins pro IP und Zeitfenster (Standard: 10)
ADMIN_LOGIN_RATE_LIMIT_WINDOW Optional: Zeitfenster in Sekunden für Admin-Login-Limit (Standard: 900)
CHECKOUT_RATE_LIMIT_MAX Optional: max. Checkout-Versuche pro IP und Fenster (Zähler erst nach erfolgreich gespeicherter Bestellung; Standard: 30)
CHECKOUT_RATE_LIMIT_WINDOW Optional: Zeitfenster in Sekunden für Checkout-Limit (Standard: 3600)
DISCLAIMER_LINES Hinweistext auf der Startseite
ORDER_PREFIX Präfix für Bestellnummern
ORDER_RECIPIENT_EMAIL Standard-Empfänger für interne Bestellmails
ATTACH_ORDER_PDF_TO_ADMIN_EMAIL Standard, ob interne Bestellmails ein PDF erhalten
ADMIN_EMAIL Fallback für Admin-Profile ohne gültige Mailadresse
FROM_EMAIL Absenderadresse ausgehender Mails
FROM_NAME Anzeigename ausgehender Mails
DATA_DIR Verzeichnis für JSON-Daten und Unterordner (data/)
UPLOADS_DIR Verzeichnis für Produktbilder (data/uploads/)
UPLOADS_URL Öffentliche URL-Basis für Uploads (SITE_URL + /data/uploads)
PRODUCTS_FILE JSON-Datei für Produkte
ORDERS_FILE JSON-Datei für Bestellungen
ORGANIZATIONS_FILE JSON-Datei für Organisationen
SETTINGS_FILE JSON-Datei für im Admin veränderbare Systemeinstellungen
ADMINS_FILE JSON-Datei für Adminkonten
CATEGORIES_FILE JSON-Datei für Kategorien
FAQ_FILE JSON-Datei für FAQ-Inhalte
MANUAL_BACKORDERS_FILE JSON-Datei für manuelle Nachbestell-Einträge (ohne Bestellbezug)
BACKUP_DIR Lokales Verzeichnis für Daten-Backups (Standard: DATA_DIR . 'backups/')
BACKUP_LOCAL_RETENTION Anzahl lokal aufzubewahrender Backup-ZIPs (Standard: 4)
BACKUP_AUTO_INTERVAL_SECONDS Intervall für Backups durch Admin-Aktivität (Standard: 604800 = wöchentlich; 0 deaktiviert)
BACKUP_REMOTE_TARGETS Optionale Remote-Ziele für Backup-Uploads (s3, sftp, custom, managed)

Bearbeitung im Admin

config.php kann direkt im Admin unter Einstellungen > Lokale Konfiguration bearbeitet werden — dieser Abschnitt ist nur sichtbar, wenn mit dem Benutzerkonto admin angemeldet ist (siehe data/admins.json). Vor dem Speichern wird die PHP-Syntax im laufenden Prozess geprüft (token_get_all() mit TOKEN_PARSE, da PHP_BINARY unter mod_php/php-fpm nicht auf die PHP-CLI zeigt); die vorherige Version wird automatisch nach data/backups/config/ gesichert.

Die Syntaxprüfung erkennt nur Parse-Fehler. Eine syntaktisch gültige Konfiguration, in der benötigte Konstanten (z. B. DATA_DIR) fehlen, legt die Anwendung inklusive dieser Bearbeitungsmaske lahm — dann muss config.php per Dateizugriff aus data/backups/config/ wiederhergestellt werden.

Runtime (data/settings.json)

Im Admin unter Einstellungen überschreibbar (schreibt data/settings.json):

  • order_recipient_email — Empfänger interner Bestellmails (hat Vorrang vor ORDER_RECIPIENT_EMAIL)
  • attach_order_pdf_to_admin_email — PDF-Anhang an interne Bestellmails
  • nametag_product_name — Produktname, über den admin/nametags.php Namensschild-Positionen erkennt (Standard: Namensschild). Muss exakt dem Produktnamen im Katalog entsprechen; siehe ADMIN_BUSINESS_LOGIC.md

Der Startseiten-Introtext wird unter Einstellungen > FAQ gepflegt (startpage_intro_text in derselben Datei). Beim Speichern des Abschnitts Allgemein bleibt der Introtext erhalten.

Rate limits und Logging

  • Rate-Limit-Zähler liegen unter data/ratelimit/ (wird bei Bedarf angelegt).
  • Wenn das Verzeichnis nicht beschreibbar ist, gelten Limits als nicht aktiv (Anfragen werden zugelassen — Verfügbarkeit auf Shared Hosting).
  • Zugriffs- und Fehlerprotokolle: data/logs/ (siehe logAccess / logError in includes/functions.php).
  • Logs werden ab LOG_MAX_BYTES rotiert, es bleiben LOG_KEEP_FILES rotierte Dateien erhalten, und rotierte Logs älter als LOG_MAX_AGE_SECONDS werden entfernt.

Backups

  • Manuelle Backups werden im Admin unter Einstellungen erstellt.
  • Automatische Backups werden nur durch Admin-Aktivität auf der Einstellungsseite ausgelöst, wenn das konfigurierte Intervall abgelaufen ist.
  • Backups enthalten data/*.json und data/uploads/**; App-Dateien, Logs, Updates, Rate-Limits und bestehende Backups werden ausgeschlossen.
  • SFTP benötigt die optionale PHP-SSH2-Erweiterung. Ohne Erweiterung bleibt das lokale Backup gültig, der Remote-Upload wird als fehlgeschlagen protokolliert.
  • Zugangsdaten für Remote-Ziele gehören in config.php, nicht in data/settings.json.
  • Details und Beispiele: Backup-Konfiguration.

Hinweis

Die Konstanten definieren die Startwerte. Änderbare Betriebsparameter wie interne Empfängeradresse können zusätzlich im Adminbereich unter Einstellungen angepasst werden.