Preskočiť na obsah

config.inc.php do hĺbky

web/config.inc.php je konfiguračný súbor konkrétnej inštalácie MRBS. Určuje správanie danej lokality a zvyčajne obsahuje citlivé údaje. Považujte ho za produkčnú konfiguráciu, nie za zdrojový súbor aplikácie.

Vytvorte súbor

MRBS odosiela web/config.inc.php-sample, ale zámerne neposiela aktívne config.inc.php.

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

Začnite s ukážkou z rovnakého vydania MRBS. Neprenášajte starú vzorku v nezmenenej forme.

Ako sa načíta konfigurácia

Zdieľaný bootstrap načíta konfiguráciu v tomto poradí:

  1. systemdefaults.inc.php
  2. areadefaults.inc.php
  3. config.inc.php
  4. site_config.inc
  5. interné overovanie a spracovanie kompatibility

Neskoršie úlohy prepíšu predchádzajúce. To je dôvod, prečo krátke config.inc.php môže nahradiť predvolené nastavenia aplikácie bez úpravy súborov vydania.

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

Hodnoty plôch už uložené v databáze sa upravujú cez Izby. Zmena areadefaults.inc.php alebo prepísanie v config.inc.php neprepíše existujúce oblasti.

PHP syntax

Konfigurácia je spustiteľná PHP. Každý výrok končí bodkočiarkou. Reťazce môžu používať jednoduché alebo dvojité úvodzovky:

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

Použite skutočné booleany PHP, nie reťazce:

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

Polia môžu používať buď podporovanú syntax PHP:

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

Nepridávajte koncovú značku ?>. Môže zaviesť náhodný výstup a zlomiť hlavičky alebo súbory cookie.

Minimálne nastavenia

Nová lokalita zvyčajne potrebuje časové pásmo miestnosti a pripojenie k databáze:

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

Použite časové pásmo, v ktorom sa izby nachádzajú. Môže sa líšiť od časového pásma servera.

Konfigurácia databázy

Vyberte databázu

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

alebo:

$dbsys = 'pgsql'; // PostgreSQL

Správanie pripojenia

localhost môže vybrať Unix soket v závislosti od ovládača. Použite 127.0.0.1 na vynútenie TCP pre MySQL. Neštandardný port je možné špecifikovať samostatne:

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

PostgreSQL inštalácie s niekoľkými schémami môžu nastaviť:

$db_schema = 'public';

Predpona tabuľky sa musí zhodovať s nainštalovanou schémou:

$db_tbl_prefix = 'mrbs_';

Trvalé pripojenia sú predvolene zakázané. Povoľte ich až po zmeraní skutočnej potreby a pochopení ich interakcie s transakciami a zámkami.

Nastavenia adresy URL a reverzného servera proxy

MRBS zvyčajne odvodzuje svoju adresu URL z požiadavky. Keď to robí reverzný proxy server, predpona cesty alebo nezvyčajné nastavenie virtuálneho hostiteľa nespoľahlivé, skopírujte príslušné nastavenia adresy URL z systemdefaults.inc.php a nastavte explicitnú verejnú základňu.

Externá adresa URL musí používať schému a hostiteľa, ktoré vidia používatelia. Nakonfigurujte proxy tak, aby odovzdával dôveryhodnú schému a informácie o hostiteľovi a odmietal nedôveryhodné hlavičky hostiteľa.

Po zmene správania URL otestujte:

  • presmerovanie po prihlásení;
  • odkazy v e-mailoch;
  • adresy URL iCalendar;
  • výstupné odkazy kiosku;
  • odkazy na viacero stránok; a
  • HTTP-to-HTTPS presmerovania.

Autentifikácia a relácie

Autentifikácia overuje identitu; metóda relácie ho získava a uchováva.

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

Externé systémy pridávajú svoje vlastné nastavenia, napríklad:

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

Nekopírujte vzorových používateľov alebo heslá do produkcie. Explicitne mapujte prístup správcu a otestujte bežného používateľa aj správcu. Pozri Autentifikácia.

Kontrola prístupu

Nastavenia pod $auth riadia verejnú viditeľnosť a privilegované správanie pri rezervácii:

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

Spoločne skontrolujte súvisiace nastavenia. Verejný kalendár, verejná správa, kiosk a súkromná rezervácia môžu odhaliť rôzne informácie.

Kalendár a rozhranie

Bežné globálne prepísania zahŕňajú:

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

Formátovanie dátumu a času zohľadňuje miestne nastavenie. Pri prepisovaní formátu radšej skopírujte celý relevantný záznam $datetime_formats, než aby ste ho čiastočne rekonštruovali.

Pravidlá rezervácie

Mnohé pravidlá rezervácie patria do oblasti a sú spravované v databáze. Globálne nastavenia môžu zaviesť limity v rôznych oblastiach alebo obmedziť možnosti.

Prepisy pravidiel uchovávajte v jednej jasne označenej časti a zdokumentujte obchodný dôvod:

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

Otestujte opakujúce sa, viacdňové rezervácie a rezervácie správcu na hranici politiky.

Email

Vyberte spôsob odosielania a nakonfigurujte odosielateľa, príjemcov, udalosti a pripojenie:

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

Ponechajte overenie certifikátu povolené. Pozri E-mailové upozornenia.

Jazyk a miestne znenie

Pevne nastavený predvolený jazyk nastavte iba vtedy, keď je vyjednávanie prehliadača nevhodné:

$default_language_tokens = 'de';

Prepísať jednotlivé štítky bez úpravy 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';

Použitie $vocab_override zachováva miestne znenie počas aktualizácií. Kompletný pracovný postup je uvedený v Text a preklady.

Vlastné polia

Vlastné stĺpce databázy môžu byť označené a tvarované pomocou konfigurácie:

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

Najprv je potrebné vykonať zmeny databázy. Vlastný stĺpec entry vyžaduje identický stĺpec v repeat. Podporované typy, príklady schém, overenie, súkromie, poradie polí a testovanie nájdete na Vlastné polia.

Zahrňte tajomstvá z iného súboru

config.inc.php môže obsahovať ďalší súbor, ale cesta musí byť absolútna:

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

Vložený súbor má vracať alebo priraďovať iba očakávané hodnoty a musí byť čitateľný pre proces PHP. Uchovávajte ho mimo verejného koreňového adresára webu.

Premenné prostredia možno čítať aj explicitne:

$db_password = getenv('MRBS_DB_PASSWORD');

Namiesto tichého prijatia prázdneho tajomstva overte, či požadovaná hodnota existuje.

Multisite

Multisite používa globálnu konfiguráciu plus konfiguráciu špecifickú pre lokalitu pod sites/<site>/. Každá lokalita potrebuje minimálne izolovanú predponu tabuľky:

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

Autentifikácia, pošta, téma a ďalšie nastavenia sa môžu líšiť podľa lokality. Pozri Multisite.

Ladenie

Povoľte správanie pri ladení iba dočasne a nikdy ho nevystavujte nedôveryhodným používateľom. Výstup ladenia špecifický pre integráciu môže obsahovať údaje adresára, hlavičky, podrobnosti o poštovom serveri alebo osobné informácie.

Ponechajte zapisovanie poverení zakázané:

$auth['log_credentials'] = false;

Údržba bezpečná pre upgrade

Pre každý upgrade MRBS:

  1. Zálohujte aktívnu konfiguráciu.
  2. Začnite od nového vydania config.inc.php-sample.
  3. Porovnajte staré prepísania s novými predvolenými hodnotami.
  4. Preneste iba zámerné nastavenia.
  5. Odstráňte zastarané premenné nahlásené kontrolami kompatibility.
  6. Spustite overenie syntaxe a funkčné testy.

Vyhnite sa kopírovaniu úplných starých predvolených nastavení do novej konfigurácie; ktorý skrýva nové predvolené nastavenia a sťažuje neskoršie aktualizácie.

Kontrolný zoznam overenia

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

Potom overte:

  • verzie aplikácie a databázy na Pomocník;
  • pripojenie k databáze a predpona tabuľky;
  • časové pásmo miestnosti a správanie pri prechode na letné svetlo;
  • prihlásenie, odhlásenie, expirácia a mapovanie administrátora;
  • verejné a súkromné názory;
  • vytvárať, upravovať, mazať, opakovať a hranice politiky;
  • odosielateľ e-mailu, príjemcovia a TLS;
  • reporty, exporty, kiosk a multisite, ak sa používajú; a
  • protokoly bez hesiel alebo súkromných údajov.

Odporúčané rozloženie súboru

Udržujte súbor krátky a zoskupený:

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

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

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

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

// Site-specific overrides
// ...

Každé neočividné prepísanie by malo vysvetliť, prečo to inštalácia potrebuje.