config.inc.php v globino¶
web/config.inc.php je konfiguracijska datoteka posamezne namestitve MRBS. Določa vedenje spletnega mesta in navadno vsebuje občutljive podatke. Obravnavajte jo kot produkcijsko konfiguracijo, ne kot izvorno datoteko aplikacije.
Ustvarite datoteko¶
MRBS pošilja web/config.inc.php-sample, vendar namenoma ne pošilja aktivnega config.inc.php.
Začnite z vzorcem iz iste izdaje MRBS. Ne prenašajte starega vzorca naprej nespremenjenega.
Kako se naloži konfiguracija¶
Skupni zagon naloži konfiguracijo v tem vrstnem redu:
systemdefaults.inc.phpareadefaults.inc.phpconfig.inc.phpsite_config.inc- notranja validacija in obravnavanje združljivosti
Kasnejše dodelitve preglasijo prejšnje. Zato lahko kratek config.inc.php nadomesti privzete nastavitve aplikacije brez spreminjanja datotek izdaje.
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
Vrednosti površin, ki so že shranjene v bazi podatkov, se urejajo prek Sobe. Spreminjanje areadefaults.inc.php ali preglasitev v config.inc.php ne prepiše obstoječih področij.
PHP sintaksa¶
Konfiguracija je izvedljiva PHP. Vsaka izjava se konča s podpičjem. Nizi lahko uporabljajo enojne ali dvojne narekovaje:
$timezone = 'Europe/Berlin';
$default_view = "week";
$kiosk_mode_enabled = false;
$search["count"] = 30;
Uporabite prave logične vrednosti PHP, ne nizov:
$mail_settings['disabled'] = false; // Correct
$mail_settings['disabled'] = "false"; // Wrong: this is a non-empty string
Nizi lahko uporabljajo eno od podprtih sintaks PHP:
Ne dodajajte zaključne oznake ?>. Lahko povzroči naključne izpise in prekine glave ali piškotke.
Minimalne nastavitve¶
Novo spletno mesto običajno potrebuje časovni pas sobe in povezavo z bazo podatkov:
$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;
Uporabite časovni pas, kjer se nahajajo sobe. Lahko se razlikuje od časovnega pasu strežnika.
Konfiguracija baze podatkov¶
Izberite bazo podatkov¶
ali:
Vedenje povezave¶
localhost lahko izbere vtičnico Unix glede na gonilnik. Uporabite 127.0.0.1, da vsilite TCP za MySQL. Nestandardna vrata je mogoče določiti ločeno:
PostgreSQL namestitve z več shemami lahko nastavijo:
Predpona tabele se mora ujemati z nameščeno shemo:
Trajne povezave so privzeto onemogočene. Omogočite jih šele po merjenju resnične potrebe in razumevanju njihove interakcije s transakcijami in zaklepanji.
Nastavitve URL-ja in povratnega posrednika¶
MRBS svoj URL običajno izpelje iz zahteve. Če je zaradi obratnega proxyja, predpone poti ali nenavadne nastavitve navideznega gostitelja to nezanesljivo, kopirajte ustrezne nastavitve URL-ja iz systemdefaults.inc.php in nastavite eksplicitno javno bazo.
Zunanji URL mora uporabljati shemo in gostitelja, ki ju vidijo uporabniki. Konfigurirajte proxy za posredovanje zaupanja vredne sheme in informacij o gostitelju ter zavrnitev nezaupljivih glav gostitelja.
Po spremembi obnašanja URL-ja preizkusite:
- preusmeritve po prijavi;
- povezave v e-pošti;
- iCalendar URL-ji;
- povezave za izhod iz kioska;
- večstranske povezave; in
- HTTP-na-HTTPS preusmeri.
Avtentikacija in seje¶
Avtentikacija preverja identiteto; metoda seje jo pridobi in obdrži.
Zunanji sistemi dodajo lastne nastavitve, na primer:
Ne kopirajte vzorčnih uporabnikov ali gesel v produkcijo. Administratorski dostop zemljevida izrecno in preizkusite tako običajnega uporabnika kot skrbnika. Glej Preverjanje pristnosti.
Nadzor dostopa¶
Nastavitve pod $auth nadzorujejo javno vidnost in privilegirano vedenje pri rezervaciji:
$auth['deny_public_access'] = true;
$auth['only_admin_can_book'] = false;
$auth['admin_must_obey_policies'] = true;
Skupaj preglejte povezane nastavitve. Javni koledar, javno poročilo, kiosk in zasebna rezervacija lahko razkrijejo različne informacije.
Koledar in vmesnik¶
Pogoste globalne preglasitve vključujejo:
$default_view = 'week';
$weekstarts = 1; // Monday
$display_mincals = true;
$show_timeline = true;
$kiosk_mode_enabled = false;
Oblikovanje datuma in časa je odvisno od področnih nastavitev. Kopirajte celoten ustrezni vnos $datetime_formats, ko preglasite format, namesto da ga delno rekonstruirate.
Pravila rezervacije¶
Številna pravila rezervacij pripadajo področju in se upravljajo v bazi podatkov. Globalne nastavitve lahko naložijo omejitve na področjih ali omejijo zmogljivosti.
Preglasitve pravilnika hranite v enem jasno označenem razdelku in dokumentirajte poslovni razlog:
// Facilities policy: every user may hold at most 20 future bookings.
$max_per_interval_global_enabled['future'] = true;
$max_per_interval_global['future'] = 20;
Preizkusite ponavljajoče se, večdnevne in skrbniške rezervacije na meji pravilnika.
E-pošta¶
Izberite način pošiljanja ter nastavite pošiljatelja, prejemnike, dogodke in povezavo:
$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';
Omogočite preverjanje potrdila. Glej E-poštna obvestila.
Jezik in lokalno besedilo¶
Nastavite fiksni privzeti jezik samo, če pogajanje brskalnika ni primerno:
Preglasite posamezne oznake brez urejanja 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';
Uporaba $vocab_override ohranja lokalno besedilo med nadgradnjami. Celoten potek dela je zajet v Besedilo in prevodi.
Polja po meri¶
Stolpce zbirke podatkov po meri je mogoče označiti in oblikovati s konfiguracijo:
$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;
Najprej je treba dokončati spremembe baze podatkov. Stolpec po meri entry zahteva identičen stolpec v repeat. Glejte Polja po meri za podprte vrste, primere shem, preverjanje, zasebnost, vrstni red polj in testiranje.
Vključite skrivnosti iz druge datoteke¶
config.inc.php lahko vključuje drugo datoteko, vendar mora biti pot absolutna:
Vključena datoteka mora vrniti ali dodeliti samo pričakovane vrednosti in biti berljiva v izvajalnem okolju PHP. Naj bo zunaj spletnega korena.
Spremenljivke okolja je mogoče prebrati tudi eksplicitno:
Preverite, ali zahtevana vrednost obstaja, namesto da tiho sprejmete prazno skrivnost.
Multisite¶
Multisite uporablja globalno konfiguracijo in konfiguracijo, specifično za spletno mesto pod sites/<site>/. Vsako spletno mesto potrebuje najmanj izolirano predpono tabele:
Preverjanje pristnosti, pošta, tema in druge nastavitve se lahko razlikujejo glede na mesto. Glej Multisite.
Odpravljanje napak¶
Vedenje odpravljanja napak omogočite samo začasno in ga nikoli ne izpostavljajte uporabnikom, ki jim ne zaupate. Izhodni podatki za odpravljanje napak, specifični za integracijo, lahko vsebujejo podatke imenika, glave, podrobnosti poštnega strežnika ali osebne podatke.
Beleženje poverilnic naj bo onemogočeno:
Vzdrževanje, varno za nadgradnjo¶
Za vsako nadgradnjo MRBS:
- Varnostno kopirajte aktivno konfiguracijo.
- Začnite z novo izdajo
config.inc.php-sample. - Primerjajte stare preglasitve z novimi privzetimi nastavitvami.
- Prenos samo namernih nastavitev.
- Odstranite zastarele spremenljivke, o katerih poročajo preverjanja združljivosti.
- Izvedite validacijo sintakse in funkcionalne teste.
Izogibajte se kopiranju vseh starih privzetih nastavitev v novo konfiguracijo; ki skrije nove privzete nastavitve in oteži poznejše nadgradnje.
Kontrolni seznam za preverjanje veljavnosti¶
Nato preverite:
- različice aplikacije in zbirke podatkov na Help;
- povezava z bazo podatkov in predpona tabele;
- časovni pas sobe in poletni čas;
- prijava, odjava, preslikava poteka in skrbnik;
- javni in zasebni pogledi;
- ustvarjanje, urejanje, brisanje, ponavljanje in meje pravilnika;
- pošiljatelj elektronske pošte, prejemniki in TLS;
- poročila, izvozi, kiosk in več mest, kjer se uporabljajo; in
- dnevnike brez gesel ali zasebnih podatkov.
Priporočena postavitev datoteke¶
Naj bo datoteka kratka in združena:
<?php
declare(strict_types=1);
namespace MRBS;
// Timezone
$timezone = 'Europe/Berlin';
// Database
$dbsys = 'mysql';
// ...
// Authentication
$auth['type'] = 'db';
$auth['session'] = 'php';
// Site-specific overrides
// ...
Vsaka neočitna preglasitev mora pojasniti, zakaj jo namestitev potrebuje.