Sari la conținut

config.inc.php în profunzime

web/config.inc.php este fișierul de configurare propriu fiecărei instalări MRBS. Acesta definește comportamentul specific site-ului și conține de obicei date confidențiale. Tratați-l ca pe o configurație de producție, nu ca pe un fișier sursă al aplicației.

Creați fișierul

MRBS include web/config.inc.php-sample, dar nu furnizează în mod intenționat un fișier config.inc.php activ.

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

Începeți cu eșantionul din aceeași versiune MRBS. Nu transportați o probă veche înainte neschimbată.

Cum se încarcă configurația

Bootstrap-ul partajat încarcă configurația în această ordine:

  1. systemdefaults.inc.php
  2. areadefaults.inc.php
  3. config.inc.php
  4. site_config.inc
  5. validarea internă și gestionarea compatibilității

Misiunile ulterioare le înlocuiesc pe cele anterioare. Acesta este motivul pentru care un scurt config.inc.php poate înlocui valorile implicite ale aplicației fără a modifica fișierele de lansare.

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

Valorile zonei deja stocate în baza de date sunt editate prin Săli. Schimbarea areadefaults.inc.php sau o modificare în config.inc.php nu rescrie zonele existente.

PHP sintaxă

Configurația este executabilă PHP. Fiecare afirmație se termină cu punct și virgulă. Șirurile pot folosi ghilimele simple sau duble:

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

Folosiți boolean reale PHP, nu șiruri de caractere:

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

Matricele pot utiliza oricare dintre sintaxa PHP acceptate:

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

Nu adăugați o etichetă de închidere ?>. Poate introduce rezultate accidentale și poate întrerupe anteturi sau cookie-uri.

Setări minime

Un site nou are nevoie în mod normal de un fus orar al sălii și o conexiune la baza de date:

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

Utilizați fusul orar în care sunt situate sălile. Poate diferi de fusul orar al serverului.

Configurarea bazei de date

Selectați baza de date

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

sau:

$dbsys = 'pgsql'; // PostgreSQL

Comportamentul conexiunii

localhost poate selecta un socket Unix în funcție de driver. Utilizați 127.0.0.1 pentru a forța TCP pentru MySQL. Un port non-standard poate fi specificat separat:

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

PostgreSQL instalațiile cu mai multe scheme pot seta:

$db_schema = 'public';

Prefixul tabelului trebuie să se potrivească cu schema instalată:

$db_tbl_prefix = 'mrbs_';

Conexiunile persistente sunt dezactivate implicit. Activați-le numai după măsurarea unei nevoi reale și înțelegerea interacțiunii lor cu tranzacțiile și blocările.

Setări URL și proxy invers

MRBS își derivă de obicei adresa URL din solicitare. Când un proxy invers, un prefix de cale sau o configurare neobișnuită a gazdei virtuale face acest lucru nesigur, copiați setările URL relevante din systemdefaults.inc.php și setați o bază publică explicită.

Adresa URL externă trebuie să utilizeze schema și gazda văzute de utilizatori. Configurați proxy-ul pentru a transmite informații despre schemă și gazdă de încredere și pentru a respinge anteturile gazdei care nu sunt de încredere.

După modificarea comportamentului adresei URL, testați:

  • redirecționări după autentificare;
  • link-uri în e-mail;
  • URL-uri iCalendar;
  • legături de ieșire la chioșc;
  • link-uri multisite; şi
  • redirecționări HTTP-to-HTTPS.

Autentificare și sesiuni

Autentificarea verifică identitatea; metoda sesiunii o obtine si retine.

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

Sistemele externe își adaugă propriile setări, de exemplu:

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

Nu copiați exemple de utilizatori sau parole în producție. Hartă accesul administratorului în mod explicit și testează un utilizator normal, precum și un administrator. Vezi Autentificare.

Control acces

Setările din $auth controlează vizibilitatea publică și comportamentul de rezervare privilegiat:

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

Examinați împreună setările asociate. Un calendar public, un raport public, un chioșc și o rezervare privată pot expune diferite informații.

Calendar și interfață

Modificarile globale comune includ:

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

Formatarea datei și orei ține cont de local. Copiați intrarea completă relevantă $datetime_formats atunci când înlocuiți un format, în loc să-l reconstruiți parțial.

Reguli de rezervare

Multe reguli de rezervare aparțin unei zone și sunt administrate în baza de date. Setările globale pot impune limite în zone sau pot restricționa capabilitățile.

Păstrați modificările politicii într-o secțiune clar etichetată și documentați motivul comercial:

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

Testați rezervările recurente, pe mai multe zile și ale administratorului la limita politicii.

E-mail

Alegeți metoda de trimitere și configurați expeditorul, destinatarii, evenimentele și conexiunea:

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

Păstrați activată verificarea certificatului. Vezi Notificări prin e-mail.

Limba și formularea locală

Setați o limbă implicită fixă numai atunci când negocierea browserului nu este adecvată:

$default_language_tokens = 'de';

Ignorați etichetele individuale fără a edita 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';

Utilizarea $vocab_override păstrează formularea locală în timpul actualizărilor. Fluxul de lucru complet este acoperit în Text și traduceri.

Câmpuri personalizate

Coloanele personalizate ale bazei de date pot fi etichetate și modelate prin configurație:

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

Modificările bazei de date trebuie finalizate mai întâi. O coloană personalizată entry necesită o coloană identică în repeat. Consultați Câmpuri personalizate pentru tipurile acceptate, exemple de schemă, validare, confidențialitate, ordine de câmp și testare.

Includeți secrete dintr-un alt fișier

config.inc.php poate include un alt fișier, dar calea trebuie să fie absolută:

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

Fișierul inclus ar trebui să returneze sau să atribuie numai valorile așteptate și să poată fi citit de PHP. Păstrați-l în afara rădăcinii documentelor web.

Variabilele de mediu pot fi citite și în mod explicit:

$db_password = getenv('MRBS_DB_PASSWORD');

Validați că există o valoare necesară în loc să acceptați în tăcere un secret gol.

Multisite

Multisite utilizează configurația globală plus o configurație specifică site-ului sub sites/<site>/. Cel puțin, fiecare site are nevoie de un prefix de tabel izolat:

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

Autentificarea, e-mailul, tema și alte setări pot diferi în funcție de site. Vezi Multisite.

Depanare

Activați comportamentul de depanare doar temporar și nu îl expuneți niciodată utilizatorilor neîncrezători. Ieșirea de depanare specifică integrării poate conține date de director, anteturi, detalii despre serverul de e-mail sau informații personale.

Păstrați dezactivată înregistrarea acreditărilor:

$auth['log_credentials'] = false;

Întreținere în siguranță pentru upgrade

Pentru fiecare upgrade MRBS:

  1. Faceți o copie de rezervă a configurației active.
  2. Începeți de la noua versiune config.inc.php-sample.
  3. Comparați anulări vechi cu valorile implicite noi.
  4. Transferați numai setările intenționate.
  5. Eliminați variabilele învechite raportate de verificările de compatibilitate.
  6. Rulați validarea sintaxelor și teste funcționale.

Evitați copierea setărilor implicite vechi complete în noua configurație; care ascunde noile valori implicite și îngreunează upgrade-urile ulterioare.

Lista de verificare pentru validare

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

Apoi verificați:

  • versiunile aplicației și bazei de date pe Ajutor;
  • conexiune la baza de date și prefix de tabel;
  • fusul orar al sălii și comportamentul de vară;
  • autentificare, deconectare, expirare și mapare administrator;
  • vederi publice și private;
  • crearea, editarea, ștergerea, recurența și limitele politicii;
  • expeditorul de e-mail, destinatarii și TLS;
  • rapoarte, exporturi, chioșc și multisite acolo unde sunt utilizate; şi
  • jurnalele fără parole sau date private.

Aspect recomandat pentru fișiere

Păstrați fișierul scurt și grupat:

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

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

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

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

// Site-specific overrides
// ...

Fiecare modificare neevidentă ar trebui să explice de ce instalația are nevoie de ea.