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.
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í:
systemdefaults.inc.phpareadefaults.inc.phpconfig.inc.phpsite_config.inc- 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:
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¶
alebo:
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:
PostgreSQL inštalácie s niekoľkými schémami môžu nastaviť:
Predpona tabuľky sa musí zhodovať s nainštalovanou schémou:
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.
Externé systémy pridávajú svoje vlastné nastavenia, napríklad:
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é:
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:
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:
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:
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é:
Údržba bezpečná pre upgrade¶
Pre každý upgrade MRBS:
- Zálohujte aktívnu konfiguráciu.
- Začnite od nového vydania
config.inc.php-sample. - Porovnajte staré prepísania s novými predvolenými hodnotami.
- Preneste iba zámerné nastavenia.
- Odstráňte zastarané premenné nahlásené kontrolami kompatibility.
- 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¶
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.