Gå til indholdet

Den komplette guide til config.inc.php

web/config.inc.php er den lokale konfigurationsfil for en MRBS-installation. Den styrer installationens adfærd og indeholder normalt følsomme oplysninger. Behandl den som produktionskonfiguration, ikke som en kildefil til applikationen.

Opret filen

MRBS leveres med web/config.inc.php-sample, men bevidst uden en aktiv config.inc.php.

cd /var/www/mrbs
cp config.inc.php-sample config.inc.php

Tag altid udgangspunkt i eksempelfilen fra den samme MRBS-udgivelse. Genbrug ikke en gammel eksempelfil uændret.

Hvordan konfigurationen indlæses

Den fælles opstartskode indlæser konfigurationen i denne rækkefølge:

  1. systemdefaults.inc.php
  2. areadefaults.inc.php
  3. config.inc.php
  4. site_config.inc
  5. intern validering og kompatibilitetshåndtering

Senere tildelinger tilsidesætter tidligere tildelinger. Derfor kan en kort config.inc.php ændre applikationens standardværdier, uden at filerne fra udgivelsen redigeres.

flowchart LR
  System[System defaults] --> Area[New-area defaults]
  Area --> Local[config.inc.php]
  Local --> Site[Site-specific config]
  Site --> Check[Validation and compatibility]

Important

Områdeværdier, der allerede er gemt i databasen, redigeres under Rum. En ændring af areadefaults.inc.php eller den tilsvarende indstilling i config.inc.php ændrer ikke eksisterende områder.

PHP-syntaks

Konfigurationen er eksekverbar PHP. Hver sætning afsluttes med et semikolon. Strenge kan stå i enkelte eller dobbelte anførselstegn:

$timezone = 'Europe/Berlin';
$default_view = "week";
$kiosk_mode_enabled = false;
$search["count"] = 30;

Brug rigtige booleske PHP-værdier, ikke strenge:

$mail_settings['disabled'] = false;   // Correct
$mail_settings['disabled'] = "false"; // Wrong: this is a non-empty string

Arrays kan bruge begge understøttede PHP-syntakser:

$auth['admin'] = array('alice', 'bob');
$report_open_areas = [1, 3];

Tilføj ikke et afsluttende ?>-tag. Det kan introducere utilsigtet output og bryde overskrifter eller cookies.

Minimumsindstillinger

Et nyt websted har normalt brug for en tidszone og en databaseforbindelse:

$timezone = 'Europe/Berlin';

$dbsys = 'mysql';
$db_host = 'localhost';
$db_database = 'mrbs';
$db_login = 'mrbs';
$db_password = 'replace-this-password';
$db_tbl_prefix = 'mrbs_';
$db_persist = false;

Brug tidszonen for lokalernes placering. Den kan afvige fra serverens tidszone.

Databasekonfiguration

Vælg databasen

$dbsys = 'mysql'; // MySQL or MariaDB

eller:

$dbsys = 'pgsql'; // PostgreSQL

Forbindelsesadfærd

Afhængigt af driveren kan localhost vælge en Unix-socket. Brug 127.0.0.1 for at tvinge MySQL til at bruge TCP. En port, der afviger fra standarden, kan angives separat:

$db_host = '127.0.0.1';
$db_port = 3306;

I PostgreSQL-installationer med flere skemaer kan du indstille:

$db_schema = 'public';

Tabelpræfikset skal matche det installerede skema:

$db_tbl_prefix = 'mrbs_';

Vedvarende forbindelser er som standard deaktiveret. Aktivér dem kun, hvis målinger viser et reelt behov, og du forstår deres samspil med transaktioner og låse.

URL-indstillinger og reverse proxy

MRBS udleder normalt sin URL af anmodningen. Hvis en reverse proxy, et stipræfiks eller en usædvanlig virtuel værtskonfiguration gør dette upålideligt, skal du kopiere de relevante URL-indstillinger fra systemdefaults.inc.php og angive den offentlige basisadresse udtrykkeligt.

Den eksterne URL skal bruge den protokol og vært, som brugerne ser. Konfigurer proxyen til at videresende pålidelige oplysninger om protokol og vært og til at afvise upålidelige Host-headere.

Efter at have ændret URL-adfærd, test:

  • omdirigeringer efter login;
  • links i e-mail;
  • iCalendar URL'er;
  • links til at forlade kiosktilstand;
  • links mellem flere websteder;
  • HTTP-til-HTTPS omdirigeringer.

Autentificering og sessioner

Autentificering verificerer identitet; sessionsmetoden henter og bevarer den.

$auth["type"] = "db";
$auth["session"] = "php";

Eksterne systemer tilføjer deres egne indstillinger, for eksempel:

$auth["type"] = "ldap";
$auth["session"] = "php";

Kopiér ikke eksempelbrugere eller adgangskoder til produktionen. Tilknyt administratoradgang udtrykkeligt, og test både en almindelig bruger og en administrator. Se Autentificering.

Adgangskontrol

Indstillinger under $auth styrer offentlig synlighed og privilegeret bookingadfærd:

$auth['deny_public_access'] = true;
$auth['only_admin_can_book'] = false;
$auth['admin_must_obey_policies'] = true;

Gennemgå relaterede indstillinger sammen. En offentlig kalender, offentlig rapport, kiosk og privat booking kan afsløre forskellige oplysninger.

Kalender og brugerflade

Almindelige globale tilsidesættelser omfatter:

$default_view = 'week';
$weekstarts = 1;                 // Monday
$display_mincals = true;
$show_timeline = true;
$kiosk_mode_enabled = false;

Formateringen af dato og klokkeslæt afhænger af sprog og landestandard. Kopiér hele den relevante $datetime_formats-post, når du ændrer et format, i stedet for at rekonstruere dele af den.

Bookingregler

Mange bookingregler hører til et område og administreres i databasen. Globale indstillinger kan pålægge grænser på tværs af områder eller begrænse muligheder.

Saml ændringer af reglerne i én tydeligt markeret sektion, og dokumentér den driftsmæssige begrundelse:

// Facilities policy: every user may hold at most 20 future bookings.
$max_per_interval_global_enabled['future'] = true;
$max_per_interval_global['future'] = 20;

Test tilbagevendende bookinger, flerdagesbookinger og administratorbookinger ved grænseværdierne.

E-mail

Vælg en afsendelsesmetode, og konfigurer afsender, modtagere, hændelser og transport:

$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'] = 'replace-this-password';

Behold kontrollen af certifikatet. Se E-mailnotifikationer.

Sprog og lokal terminologi

Indstil kun et fast standardsprog, når browserforhandling er uegnet:

$default_language_tokens = 'de';

Enkelte betegnelser kan ændres uden at redigere web/lang/lang.*:

$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';

Med $vocab_override bevares den lokale terminologi ved opgraderinger. Hele arbejdsgangen beskrives i Tekst og oversættelser.

Brugerdefinerede felter

Brugerdefinerede databasekolonner kan få en betegnelse og visningsform gennem konfigurationen:

$vocab_override['en']['room.coffee_machine'] = 'Coffee machine';
$select_options['entry.catering'] = array(
    'c' => 'Coffee',
    's' => 'Sandwiches',
    'h' => 'Hot lunch'
);
$is_mandatory_field['entry.catering'] = true;
$is_private_field['entry.refreshments'] = true;

Databaseændringer skal gennemføres først. En entry tilpasset kolonne kræver en identisk kolonne i repeat. Se Brugerdefinerede felter for understøttede typer, skemaeksempler, validering, privatliv, feltrækkefølge og test.

Indlæs følsomme oplysninger fra en anden fil

config.inc.php kan inkludere en anden fil, men stien skal være absolut:

require '/etc/mrbs/database-secrets.php';

Den inkluderede fil bør kun returnere eller tildele de forventede værdier og skal kunne læses af PHP-processen. Opbevar den uden for webroden.

Miljøvariabler kan også læses eksplicit:

$db_password = getenv('MRBS_DB_PASSWORD');

Kontrollér, at en påkrævet værdi findes, i stedet for stiltiende at acceptere en tom følsom værdi.

Flere websteder

Tilstanden med flere websteder bruger en global konfiguration og en særskilt konfiguration under sites/<site>/. Hvert websted skal som minimum have sit eget tabelpræfiks:

$multisite = true;
$db_tbl_prefix = 'berlin_';

Autentificering, mail, tema og andre indstillinger kan variere mellem webstederne. Se Flere websteder.

Fejlretning

Aktivér kun fejlretning midlertidigt, og gør den aldrig tilgængelig for ikke-betroede brugere. Integrationsspecifikt debug-output kan indeholde katalogdata, headere, oplysninger om mailserveren eller personoplysninger.

Hold logføring af loginoplysninger deaktiveret:

$auth['log_credentials'] = false;

Vedligeholdelse med henblik på opgraderinger

Ved hver MRBS-opgradering:

  1. Sikkerhedskopier den aktive konfiguration.
  2. Start fra den nye udgivelses config.inc.php-sample.
  3. Sammenlign jeres hidtidige ændringer med de nye standardværdier.
  4. Overfør kun tilsigtede indstillinger.
  5. Fjern forældede variabler rapporteret af kompatibilitetstjek.
  6. Kør syntaksvalidering og funktionstest.

Kopiér ikke alle de gamle standardindstillinger til den nye konfiguration. Det skjuler nye standardværdier og gør senere opgraderinger vanskeligere.

Valideringstjekliste

php -l /var/www/mrbs/config.inc.php

Bekræft derefter:

  • applikations- og databaseversioner på Hjælp;
  • databaseforbindelse og tabelpræfiks;
  • lokalets tidszone og overgang til sommertid;
  • login, logout, udløb og administratorkortlægning;
  • offentlige visninger og visninger af private oplysninger;
  • oprettelse, redigering, sletning og gentagelse samt bookingreglernes grænser;
  • e-mailafsender, modtagere og TLS;
  • rapporter, eksport, kiosktilstand og flere websteder, hvor funktionerne anvendes;
  • logfiler uden adgangskoder eller private data.

Anbefalet fillayout

Hold filen kort og grupperet:

<?php
declare(strict_types=1);
namespace MRBS;

// Timezone
$timezone = 'Europe/Berlin';

// Database
$dbsys = 'mysql';
// ...

// Authentication
$auth['type'] = 'db';
$auth['session'] = 'php';

// Site-specific overrides
// ...

Ved hver ændring, der ikke er selvforklarende, bør det fremgå, hvorfor installationen har brug for den.