Idi na tekst

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.

cd /var/www/mrbs
cp config.inc.php-sample 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:

  1. systemdefaults.inc.php
  2. areadefaults.inc.php
  3. config.inc.php
  4. site_config.inc
  5. 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:

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

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

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

ili:

$dbsys = 'pgsql'; // PostgreSQL

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:

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

PostgreSQL instalacije sa nekoliko šema mogu se podesiti:

$db_schema = 'public';

Prefiks tabele mora da odgovara instaliranoj šemi:

$db_tbl_prefix = 'mrbs_';

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.

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

Spoljni sistemi dodaju svoja podešavanja, na primer:

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

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:

$default_language_tokens = 'de';

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:

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

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:

$db_password = getenv('MRBS_DB_PASSWORD');

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:

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

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:

$auth['log_credentials'] = false;

Održavanje bezbedno za nadogradnju

Za svaku MRBS nadogradnju:

  1. Napravite rezervnu kopiju aktivne konfiguracije.
  2. Počnite od novog izdanja config.inc.php-sample.
  3. Uporedite stare zamene sa novim podrazumevanim vrednostima.
  4. Prenesite samo namerna podešavanja.
  5. Uklonite zastarele promenljive prijavljene proverom kompatibilnosti.
  6. 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

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

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.