config.inc.php im Detail¶
web/config.inc.php ist die installationsspezifische Konfigurationsdatei von
MRBS. Sie enthält lokale Regeln und meist auch Geheimnisse. Sie gehört zur
Betriebsumgebung, nicht zum Anwendungscode.
Datei erstellen¶
MRBS liefert nur die Vorlage web/config.inc.php-sample aus:
Immer mit der Vorlage derselben MRBS-Version beginnen.
Ladereihenfolge¶
Der gemeinsame Bootstrap lädt:
systemdefaults.inc.phpareadefaults.inc.phpconfig.inc.phpsite_config.inc- interne Prüfung und Kompatibilitätslogik
Spätere Zuweisungen überschreiben frühere Werte.
flowchart LR
System[Systemvorgaben] --> Area[Vorgaben für neue Bereiche]
Area --> Local[config.inc.php]
Local --> Site[Site-Konfiguration]
Site --> Check[Prüfung und Kompatibilität]
Important
Werte bestehender Bereiche liegen in der Datenbank und werden über Räume bearbeitet. Geänderte Bereichsvorgaben schreiben diese Werte nicht um.
PHP-Syntax¶
Die Konfiguration ist ausführbares PHP:
$timezone = 'Europe/Berlin';
$default_view = "week";
$kiosk_mode_enabled = false;
$search["count"] = 30;
Echte Boolesche Werte statt Zeichenketten verwenden:
$mail_settings['disabled'] = false; // Richtig
$mail_settings['disabled'] = "false"; // Falsch: nichtleere Zeichenkette
Für Arrays können beide von PHP unterstützten Schreibweisen verwendet werden:
Kein schließendes ?> einfügen. Unbeabsichtigte Ausgabe kann Header und
Cookies beschädigen.
Mindestkonfiguration¶
$timezone = 'Europe/Berlin';
$dbsys = 'mysql';
$db_host = 'localhost';
$db_database = 'mrbs';
$db_login = 'mrbs';
$db_password = 'dieses-passwort-ersetzen';
$db_tbl_prefix = 'mrbs_';
$db_persist = false;
Die Zeitzone der Räume verwenden – sie kann von der Serverzeitzone abweichen.
Datenbank¶
Datenbank auswählen¶
oder:
Verbindungsverhalten¶
Bei MySQL kann localhost einen Unix-Socket auswählen. 127.0.0.1 erzwingt
TCP. Nichtstandardports werden separat gesetzt:
PostgreSQL-Installationen mit mehreren Schemas können Folgendes setzen:
Das Tabellenpräfix muss zum installierten Schema passen:
Persistente Verbindungen nur nach Messung und Prüfung von Transaktionen und Sperren aktivieren.
URL und Reverse Proxy¶
MRBS ermittelt seine URL normalerweise aus der Anfrage. Hinter Reverse Proxy,
Pfadpräfix oder besonderem Virtual Host können die passenden URL-Einstellungen
aus systemdefaults.inc.php nach config.inc.php kopiert werden.
Die externe URL muss Schema und Host der Benutzer enthalten. Danach Anmeldung, E-Mail-Links, iCalendar, Kiosk, Multisite und HTTPS-Weiterleitungen testen.
Authentifizierung und Sitzung¶
Für LDAP beispielsweise:
Beispielbenutzer und -passwörter nicht übernehmen. Administratoren explizit zuordnen und normale Benutzer separat testen. Siehe Authentifizierung.
Zugriffsregeln¶
$auth['deny_public_access'] = true;
$auth['only_admin_can_book'] = false;
$auth['admin_must_obey_policies'] = true;
Öffentlicher Kalender, Berichte, Kiosk und private Buchungen können unterschiedliche Daten zeigen und müssen gemeinsam geprüft werden.
Kalender und Oberfläche¶
$default_view = 'week';
$weekstarts = 1;
$display_mincals = true;
$show_timeline = true;
$kiosk_mode_enabled = false;
Datums- und Zeitformate sind sprachabhängig. Beim Überschreiben einen
vollständigen $datetime_formats-Eintrag übernehmen.
Buchungsregeln¶
Viele Regeln sind bereichsspezifisch und werden in der Datenbank gepflegt. Globale Grenzen in einem beschrifteten Abschnitt sammeln und den fachlichen Grund dokumentieren:
// Maximal 20 zukünftige Buchungen pro Benutzer.
$max_per_interval_global_enabled['future'] = true;
$max_per_interval_global['future'] = 20;
Wiederholungen, mehrtägige Buchungen und Administratoren an den Grenzwerten testen.
E-Mail¶
$mail_settings['admin_backend'] = 'smtp';
$mail_settings['from'] = 'mrbs@example.org';
$mail_settings['booker'] = true;
$smtp_settings['host'] = 'mail.example.org';
$smtp_settings['port'] = 587;
$smtp_settings['auth'] = true;
$smtp_settings['secure'] = 'tls';
$smtp_settings['username'] = 'mrbs@example.org';
$smtp_settings['password'] = 'dieses-passwort-ersetzen';
Zertifikatsprüfung eingeschaltet lassen. Siehe E-Mail-Benachrichtigungen.
Sprache und eigene Texte¶
Eine feste Sprache nur setzen, wenn Browsererkennung nicht geeignet ist:
Texte upgradesicher überschreiben:
$vocab_override['en']['mrbs'] = 'Resource Booking';
$vocab_override['de']['mrbs'] = 'Ressourcenbuchung';
$vocab_override['fr']['mrbs'] = 'Réservation de ressources';
$vocab_override['es']['mrbs'] = 'Reserva de recursos';
Der vollständige Ablauf steht unter Texte und Übersetzungen.
Eigene Felder¶
$vocab_override['de']['room.coffee_machine'] = 'Kaffeemaschine';
$select_options['entry.catering'] = array(
'c' => 'Kaffee',
's' => 'Sandwiches',
'h' => 'Warmes Essen'
);
$is_mandatory_field['entry.catering'] = true;
$is_private_field['entry.refreshments'] = true;
Zuerst die Datenbankspalten anlegen. Ein eigenes Feld in entry benötigt eine
identische Spalte in repeat.
Unter Eigene Felder stehen Typen, SQL-Beispiele,
Validierung, Datenschutz, Reihenfolge und Prüfungen.
Geheimnisse auslagern¶
Eingebundene Dateien müssen einen absoluten Pfad verwenden:
Alternativ können Umgebungsvariablen explizit gelesen werden:
Fehlende Pflichtwerte müssen erkannt werden. Geheimdateien gehören außerhalb des Webroots.
Multisite¶
Jede Site benötigt mindestens getrennte Tabellen. Auch Authentifizierung, Mail und Theme können sitespezifisch überschrieben werden. Siehe Multisite.
Debugging¶
Debugausgabe nur kurzfristig und nicht öffentlich aktivieren. Zugangsdaten niemals loggen:
Upgradesicher pflegen¶
- Aktive Konfiguration sichern.
- Mit der neuen
config.inc.php-samplebeginnen. - Alte Überschreibungen mit neuen Vorgaben vergleichen.
- Nur beabsichtigte Werte übertragen.
- Gemeldete veraltete Variablen entfernen.
- Syntax und Funktionen prüfen.
Prüfliste¶
Danach Version und Datenbank auf Hilfe, Tabellenpräfix, Zeitzone, Anmeldung, Rechte, Buchungsregeln, E-Mail, Berichte, Export, Kiosk und Multisite prüfen. Logs dürfen keine Passwörter oder privaten Buchungsdaten enthalten.
Empfohlene Dateistruktur¶
Die Datei sollte kurz, thematisch gruppiert und bei nicht offensichtlichen Überschreibungen mit dem fachlichen Grund kommentiert bleiben.