Gå til innhold

config.inc.php i dybden

web/config.inc.php er den installasjonseide konfigurasjonsfilen for MRBS. Den inneholder stedsspesifikk atferd og inneholder vanligvis hemmeligheter. Behandle den som produksjonskonfigurasjon, ikke som en programkildefil.

Opprett filen

MRBS sender web/config.inc.php-sample, men sender bevisst ikke en aktiv config.inc.php.

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

Start med prøven fra samme MRBS-utgivelse. Ikke bær frem en gammel prøve uendret.

Hvordan konfigurasjonen lastes

Den delte bootstrap laster inn konfigurasjonen i denne rekkefølgen:

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

Senere oppdrag overstyrer tidligere. Dette er grunnen til at en kort config.inc.php kan erstatte programstandarder uten å endre utgivelsesfiler.

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ådeverdier som allerede er lagret i databasen er redigert gjennom Rom. Å endre areadefaults.inc.php eller en overstyring i config.inc.php omskriver ikke eksisterende områder.

PHP syntaks

Konfigurasjonen er kjørbar PHP. Hvert utsagn ender med semikolon. Strenger kan bruke enkle eller doble anførselstegn:

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

Bruk ekte PHP booleaner, ikke strenger:

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

Matriser kan bruke enten støttet PHP syntaks:

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

Ikke legg til en avsluttende ?>-tag. Det kan introdusere utilsiktet utdata og bryte overskrifter eller informasjonskapsler.

Minimumsinnstillinger

Et nytt nettsted trenger vanligvis en romtidssone og databasetilkobling:

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

Bruk tidssonen der rommene ligger. Det kan avvike fra serverens tidssone.

Databasekonfigurasjon

Velg databasen

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

eller:

$dbsys = 'pgsql'; // PostgreSQL

Tilkoblingsatferd

localhost kan velge en Unix-kontakt avhengig av driveren. Bruk 127.0.0.1 for å tvinge TCP for MySQL. En ikke-standard port kan spesifiseres separat:

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

PostgreSQL installasjoner med flere skjemaer kan angi:

$db_schema = 'public';

Tabellprefikset må samsvare med det installerte skjemaet:

$db_tbl_prefix = 'mrbs_';

Vedvarende tilkoblinger er deaktivert som standard. Aktiver dem bare etter å ha målt et reelt behov og forstått deres interaksjon med transaksjoner og låser.

URL og omvendt proxy-innstillinger

MRBS henter vanligvis URL-en fra forespørselen. Når en omvendt proxy, baneprefiks eller uvanlig virtuell vertsoppsett gjør dette upålitelig, kopier de relevante URL-innstillingene fra systemdefaults.inc.php og angi en eksplisitt offentlig base.

Den eksterne URL-en må bruke skjemaet og verten som er sett av brukerne. Konfigurer proxyen til å sende klarert skjema og vertsinformasjon, og avvis ikke-klarerte vertshoder.

Etter å ha endret URL-atferd, test:

  • omdirigeringer etter pålogging;
  • lenker i e-post;
  • iCalendar-URLer;
  • kiosk exit lenker;
  • multisite lenker; og
  • HTTP-til-HTTPS viderekoblinger.

Autentisering og økter

Autentisering bekrefter identitet; sesjonsmetoden henter og beholder den.

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

Eksterne systemer legger til sine egne innstillinger, for eksempel:

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

Ikke kopier eksempelbrukere eller passord til produksjon. Kartlegg administratortilgang eksplisitt og test en normal bruker så vel som en administrator. Se Autentisering.

Adgangskontroll

Innstillinger under $auth kontrollerer offentlig synlighet og privilegert bestillingsatferd:

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

Gjennomgå relaterte innstillinger sammen. En offentlig kalender, offentlig rapport, kiosk og privat booking kan avsløre forskjellig informasjon.

Kalender og grensesnitt

Vanlige globale overstyringer inkluderer:

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

Dato- og klokkeslettformatering er lokalisert. Kopier hele den relevante $datetime_formats-oppføringen når du overstyrer et format i stedet for å delvis rekonstruere det.

Bestillingsregler

Mange bookingregler tilhører et område og administreres i databasen. Globale innstillinger kan pålegge begrensninger på tvers av områder eller begrense muligheter.

Oppbevar overstyringer av retningslinjene i én tydelig merket seksjon og dokumenter forretningsårsaken:

// 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 gjentakende, flerdagers og administratorbestillinger ved policygrensen.

E-post

Velg en sendemetode og konfigurer avsender, mottakere, hendelser og tilkobling:

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

Hold sertifikatverifisering aktivert. Se E-postvarsler.

Språk og lokal formulering

Angi et fast standardspråk bare når nettleserforhandling er uegnet:

$default_language_tokens = 'de';

Overstyr individuelle etiketter uten å 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';

Bruk av $vocab_override bevarer lokale ordlyder under oppgraderinger. Hele arbeidsflyten er dekket i Tekst og oversettelser.

Egendefinerte felt

Egendefinerte databasekolonner kan merkes og formes gjennom konfigurasjon:

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

Databaseendringer må fullføres først. En entry egendefinert kolonne krever en identisk kolonne i repeat. Se Egendefinerte felt for støttede typer, skjemaeksempler, validering, personvern, feltrekkefølge og testing.

Ta med hemmeligheter fra en annen fil

config.inc.php kan inkludere en annen fil, men banen må være absolutt:

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

Den inkluderte filen skal bare returnere eller tildele de forventede verdiene og må være lesbar for PHP-prosessen. Oppbevar den utenfor webserverens offentlige rotmappe.

Miljøvariabler kan også leses eksplisitt:

$db_password = getenv('MRBS_DB_PASSWORD');

Bekreft at en nødvendig verdi eksisterer i stedet for å akseptere en tom hemmelighet i det stille.

Multisite

Multisite bruker global konfigurasjon pluss en stedsspesifikk konfigurasjon under sites/<site>/. Som et minimum trenger hvert nettsted et isolert tabellprefiks:

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

Autentisering, e-post, tema og andre innstillinger kan variere fra sted til sted. Se Multisite.

Feilsøking

Aktiver feilsøkingsatferd bare midlertidig og utsett den aldri for uklarerte brukere. Integrasjonsspesifikk feilsøkingsutgang kan inneholde katalogdata, overskrifter, e-postserverdetaljer eller personlig informasjon.

Hold påloggingslogging deaktivert:

$auth['log_credentials'] = false;

Oppgraderingssikkert vedlikehold

For hver MRBS oppgradering:

  1. Sikkerhetskopier den aktive konfigurasjonen.
  2. Start fra den nye utgivelsens config.inc.php-sample.
  3. Sammenlign gamle overstyringer med nye standardinnstillinger.
  4. Overfør kun tilsiktede innstillinger.
  5. Fjern foreldede variabler rapportert av kompatibilitetskontroller.
  6. Kjør syntaksvalidering og funksjonstester.

Unngå å kopiere de fullstendige gamle standardinnstillingene til den nye konfigurasjonen; som skjuler nye standardinnstillinger og gjør senere oppgraderinger vanskelige.

Sjekkliste for validering

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

Bekreft deretter:

  • applikasjons- og databaseversjoner på Help;
  • databasetilkobling og tabellprefiks;
  • rom tidssone og sommertid;
  • pålogging, utlogging, utløp og administratorkartlegging;
  • offentlige og private synspunkter;
  • opprette, redigere, slette, gjenta og policygrenser;
  • e-postavsender, mottakere og TLS;
  • rapporter, eksport, kiosk og multisite der det brukes; og
  • logger uten passord eller private data.

Anbefalt filoppsett

Hold filen kort og gruppert:

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

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

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

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

// Site-specific overrides
// ...

Hver ikke-innlysende overstyring bør forklare hvorfor installasjonen trenger det.