config.inc.php u dubinu¶
web/config.inc.php je konfiguraciona datoteka konkretne MRBS instalacije. Određuje ponašanje sajta i obično sadrži poverljive podatke. Tretirajte je kao produkcionu konfiguraciju, a ne kao izvornu datoteku aplikacije.
Kreirajte datoteku¶
MRBS šalje web/config.inc.php-sample, ali namerno ne šalje aktivni config.inc.php.
Počnite sa uzorkom iz istog izdanja MRBS. Ne nosite stari uzorak nepromenjen.
Kako se konfiguracija učitava¶
Zajednički bootstrap učitava konfiguraciju ovim redosledom:
systemdefaults.inc.phpareadefaults.inc.phpconfig.inc.phpsite_config.inc- interna validacija i rukovanje kompatibilnošću
Kasniji zadaci zamenjuju ranije. Zbog toga kratak config.inc.php može zameniti podrazumevane vrednosti aplikacije bez izmene datoteka izdanja.
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 oblasti koje su već uskladištene u bazi podataka se uređuju preko Sobe. Promena areadefaults.inc.php ili zamena u config.inc.php ne prepisuje postojeće oblasti.
PHP sintaksa¶
Konfiguracija je izvršna PHP. Svaka izjava se završava tačkom i zarezom. Nizovi mogu da koriste jednostruke ili dvostruke navodnike:
$timezone = 'Europe/Berlin';
$default_view = "week";
$kiosk_mode_enabled = false;
$search["count"] = 30;
Koristite realne PHP logičke vrednosti, a ne stringove:
$mail_settings['disabled'] = false; // Correct
$mail_settings['disabled'] = "false"; // Wrong: this is a non-empty string
Nizovi mogu da koriste bilo koju podržanu PHP sintaksu:
Nemojte dodavati završnu oznaku ?>. Može uvesti slučajni izlaz i razbiti zaglavlja ili kolačiće.
Minimalna podešavanja¶
Novoj lokaciji je obično potrebna vremenska zona sobe i veza sa bazom podataka:
$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;
Koristite vremensku zonu u kojoj se sobe nalaze. Može se razlikovati od vremenske zone servera.
Konfiguracija baze podataka¶
Izaberite bazu podataka¶
ili:
Ponašanje veze¶
localhost može izabrati Unik socket u zavisnosti od drajvera. Koristite 127.0.0.1 da forsirate TCP za MySQL. Nestandardni port se može navesti zasebno:
PostgreSQL instalacije sa nekoliko šema mogu se podesiti:
Prefiks tabele mora da odgovara instaliranoj šemi:
Trajne veze su podrazumevano onemogućene. Omogućite ih tek nakon merenja stvarne potrebe i razumevanja njihove interakcije sa transakcijama i bravama.
URL i podešavanja obrnutog proksija¶
MRBS obično izvodi svoj URL iz zahteva. Kada obrnuti proksi, prefiks putanje ili neobično podešavanje virtuelnog hosta učini ovo nepouzdanim, kopirajte relevantna podešavanja URL-a sa systemdefaults.inc.php i postavite eksplicitnu javnu bazu.
Spoljna URL adresa mora da koristi šemu i host koji vide korisnici. Konfigurišite proksi da prosledi pouzdanu šemu i informacije o hostu i odbaci nepouzdana zaglavlja hosta.
Nakon promene ponašanja URL adrese, testirajte:
- preusmerava nakon prijavljivanja;
- veze u imejlu;
- iCalendar URL-ovi;
- kiosk izlazne veze;
- višesajtne veze; i
- HTTP-na-HTTPS preusmerava.
Autentifikacija i sesije¶
Autentifikacija potvrđuje identitet; metoda sesije ga dobija i zadržava.
Spoljni sistemi dodaju svoja podešavanja, na primer:
Nemojte kopirati uzorke korisnika ili lozinke u produkciju. Pristup administratoru mape eksplicitno i testiranje normalnog korisnika kao i administratora. Pogledajte Autentifikacija.
Kontrola pristupa¶
Podešavanja pod $auth kontrolišu javnu vidljivost i privilegovano ponašanje prilikom rezervacije:
$auth['deny_public_access'] = true;
$auth['only_admin_can_book'] = false;
$auth['admin_must_obey_policies'] = true;
Pregledajte povezana podešavanja zajedno. Javni kalendar, javni izveštaj, kiosk i privatna rezervacija mogu otkriti različite informacije.
Kalendar i interfejs¶
Uobičajena globalna zamena uključuju:
$default_view = 'week';
$weekstarts = 1; // Monday
$display_mincals = true;
$show_timeline = true;
$kiosk_mode_enabled = false;
Formatiranje datuma i vremena zavisi od lokalizacije. Kopirajte kompletan relevantan unos $datetime_formats kada zamenite format umesto da ga delimično rekonstruišete.
Pravila rezervacije¶
Mnoga pravila rezervacije pripadaju nekoj oblasti i administriraju se u bazi podataka. Globalne postavke mogu nametnuti ograničenja u oblastima ili ograničiti mogućnosti.
Čuvajte zamene smernica u jednom jasno označenom odeljku i dokumentujte 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;
Testirajte ponavljajuće, višednevne i administratorske rezervacije na granici politike.
Email¶
Izaberite način slanja i podesite pošiljaoca, primaoce, događaje i vezu:
$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';
Ostavite verifikaciju sertifikata omogućenom. Pogledajte Obaveštenja e-poštom.
Jezik i lokalne formulacije¶
Podesite fiksni podrazumevani jezik samo kada pregovaranje pregledača nije prikladno:
Zameni pojedinačne oznake bez uređivanja 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';
Korišćenjem $vocab_override čuva se lokalni tekst tokom nadogradnje. Kompletan tok posla je pokriven u Tekst i prevodi.
Prilagođena polja¶
Prilagođene kolone baze podataka mogu biti označene i oblikovane kroz konfiguraciju:
$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;
Promene baze podataka moraju se prvo izvršiti. Prilagođena kolona entry zahteva identičnu kolonu u repeat. Pogledajte Prilagođena polja za podržane tipove, primere šema, validaciju, privatnost, redosled polja i testiranje.
Uključite tajne iz druge datoteke¶
config.inc.php može uključiti drugu datoteku, ali putanja mora biti apsolutna:
Uključena datoteka treba da vrati ili dodeli samo očekivane vrednosti i da bude čitljiva tokom PHP izvođenja. Držite ga izvan korena veba.
Promenljive okruženja se takođe mogu eksplicitno čitati:
Potvrdite da postoji potrebna vrednost umesto da tiho prihvatite praznu tajnu.
Multisite¶
Više lokacija koristi globalnu konfiguraciju plus konfiguraciju specifičnu za lokaciju pod sites/<site>/. U najmanju ruku, svakom sajtu je potreban izolovani prefiks tabele:
Potvrda identiteta, pošta, tema i druga podešavanja mogu se razlikovati u zavisnosti od sajta. Pogledajte Multisite.
Otklanjanje grešaka¶
Omogućite ponašanje otklanjanja grešaka samo privremeno i nikada ga ne izlažite nepouzdanim korisnicima. Izlaz za otklanjanje grešaka specifičan za integraciju može da sadrži podatke direktorijuma, zaglavlja, detalje servera pošte ili lične podatke.
Neka evidentiranje akreditiva bude onemogućeno:
Održavanje bezbedno za nadogradnju¶
Za svaku MRBS nadogradnju:
- Napravite rezervnu kopiju aktivne konfiguracije.
- Počnite od novog izdanja
config.inc.php-sample. - Uporedite stare zamene sa novim podrazumevanim vrednostima.
- Prenesite samo namerna podešavanja.
- Uklonite zastarele promenljive prijavljene proverom kompatibilnosti.
- Pokrenite proveru sintakse i funkcionalne testove.
Izbegavajte kopiranje kompletnih starih podrazumevanih vrednosti u novu konfiguraciju; to sakriva nove podrazumevane vrednosti i otežava kasnije nadogradnje.
Kontrolna lista za validaciju¶
Zatim proverite:
- verzije aplikacije i baze podataka na Pomoć;
- veza baze podataka i prefiks tabele;
- vremenska zona prostorija i ponašanje u toku letnjeg računanja vremena;
- prijavljivanje, odjavljivanje, isticanje i mapiranje administratora;
- javni i privatni stavovi;
- kreiranje, uređivanje, brisanje, ponavljanje i granice politike;
- pošiljalac e-pošte, primaoci i TLS;
- izveštaji, izvozi, kiosk i više lokacija gde se koriste; i
- evidencije bez lozinki ili privatnih podataka.
Preporučeni izgled datoteke¶
Neka datoteka bude kratka i grupisana:
<?php
declare(strict_types=1);
namespace MRBS;
// Timezone
$timezone = 'Europe/Berlin';
// Database
$dbsys = 'mysql';
// ...
// Authentication
$auth['type'] = 'db';
$auth['session'] = 'php';
// Site-specific overrides
// ...
Svaka neočigledna zamena treba da objasni zašto je potrebna instalaciji.