config.inc.php σε βάθος¶
Το web/config.inc.php είναι το αρχείο διαμόρφωσης της συγκεκριμένης εγκατάστασης του MRBS. Καθορίζει τη συμπεριφορά του ιστότοπου και συνήθως περιέχει ευαίσθητα δεδομένα. Αντιμετωπίστε το ως διαμόρφωση παραγωγής και όχι ως αρχείο πηγαίου κώδικα της εφαρμογής.
Δημιουργήστε το αρχείο¶
Το MRBS αποστέλλει web/config.inc.php-sample, αλλά σκόπιμα δεν αποστέλλει ένα ενεργό config.inc.php.
Ξεκινήστε με το δείγμα από την ίδια έκδοση MRBS. Μην μεταφέρετε ένα παλιό δείγμα προς τα εμπρός αμετάβλητο.
Πώς φορτώνεται η διαμόρφωση¶
Το κοινόχρηστο bootstrap φορτώνει τη διαμόρφωση με αυτήν τη σειρά:
systemdefaults.inc.phpareadefaults.inc.phpconfig.inc.phpsite_config.inc- εσωτερική επικύρωση και χειρισμός συμβατότητας
Οι μεταγενέστερες αναθέσεις αντικαθιστούν τις προηγούμενες. Αυτός είναι ο λόγος για τον οποίο ένα σύντομο config.inc.php μπορεί να αντικαταστήσει τις προεπιλογές της εφαρμογής χωρίς να τροποποιήσει τα αρχεία έκδοσης.
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
Οι τιμές περιοχών που είναι ήδη αποθηκευμένες στη βάση δεδομένων επεξεργάζονται μέσω του Αίθουσες. Η αλλαγή του areadefaults.inc.php ή μιας παράκαμψης στο config.inc.php δεν επαναγράφει τις υπάρχουσες περιοχές.
Σύνταξη PHP¶
Η διαμόρφωση είναι εκτελέσιμη PHP. Κάθε δήλωση τελειώνει με ένα ερωτηματικό. Οι συμβολοσειρές μπορούν να χρησιμοποιούν μονά ή διπλά εισαγωγικά:
$timezone = 'Europe/Berlin';
$default_view = "week";
$kiosk_mode_enabled = false;
$search["count"] = 30;
Χρησιμοποιήστε πραγματικές PHP booleans, όχι συμβολοσειρές:
$mail_settings['disabled'] = false; // Correct
$mail_settings['disabled'] = "false"; // Wrong: this is a non-empty string
Οι πίνακες μπορούν να χρησιμοποιήσουν οποιαδήποτε υποστηριζόμενη σύνταξη PHP:
Μην προσθέσετε ετικέτα κλεισίματος ?>. Μπορεί να εισάγει τυχαία έξοδο και να σπάσει κεφαλίδες ή cookies.
Ελάχιστες ρυθμίσεις¶
Ένας νέος ιστότοπος χρειάζεται συνήθως τη ζώνη ώρας των αιθουσών και μια σύνδεση βάσης δεδομένων:
$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;
Χρησιμοποιήστε τη ζώνη ώρας στην οποία βρίσκονται οι αίθουσες. Μπορεί να διαφέρει από τη ζώνη ώρας του διακομιστή.
Διαμόρφωση βάσης δεδομένων¶
Επιλέξτε τη βάση δεδομένων¶
ή:
Συμπεριφορά σύνδεσης¶
Το localhost μπορεί να επιλέξει μια υποδοχή Unix ανάλογα με το πρόγραμμα οδήγησης. Χρησιμοποιήστε το 127.0.0.1 για να εξαναγκάσετε το TCP για το MySQL. Μια μη τυπική θύρα μπορεί να καθοριστεί ξεχωριστά:
Οι εγκαταστάσεις PostgreSQL με πολλά σχήματα μπορούν να ορίσουν:
Το πρόθεμα πίνακα πρέπει να ταιριάζει με το εγκατεστημένο σχήμα:
Οι μόνιμες συνδέσεις είναι απενεργοποιημένες από προεπιλογή. Ενεργοποιήστε τις μόνο εφόσον έχετε τεκμηριώσει πραγματική ανάγκη και κατανοείτε την αλληλεπίδρασή τους με τις συναλλαγές και τα κλειδώματα.
URL και αντίστροφες ρυθμίσεις διακομιστή μεσολάβησης¶
Το MRBS συνήθως αντλεί τη διεύθυνση URL του από το αίτημα. Όταν ένας αντίστροφος διακομιστής μεσολάβησης, ένα πρόθεμα διαδρομής ή μια ασυνήθιστη ρύθμιση εικονικού κεντρικού υπολογιστή το καθιστά αναξιόπιστο, αντιγράψτε τις σχετικές ρυθμίσεις URL από το systemdefaults.inc.php και ορίστε μια ρητή δημόσια βάση.
Η εξωτερική διεύθυνση URL πρέπει να χρησιμοποιεί το σχήμα και τον κεντρικό υπολογιστή που βλέπουν οι χρήστες. Διαμορφώστε τον διακομιστή μεσολάβησης ώστε να μεταβιβάζει πληροφορίες αξιόπιστου σχήματος και κεντρικού υπολογιστή και να απορρίψετε τις μη αξιόπιστες κεφαλίδες κεντρικού υπολογιστή.
Αφού αλλάξετε τη συμπεριφορά του URL, δοκιμάστε:
- ανακατευθύνσεις μετά τη σύνδεση·
- συνδέσμους σε μηνύματα email·
- Διευθύνσεις URL iCalendar.
- σύνδεσμοι εξόδου περιπτέρου.
- συνδέσμους πολλαπλών ιστότοπων· και
- HTTP-προς-HTTPS ανακατευθύνσεις.
Έλεγχος ταυτότητας και συνεδρίες¶
Η μέθοδος ελέγχου ταυτότητας επαληθεύει την ταυτότητα, ενώ η μέθοδος συνεδρίας την αποκτά και τη διατηρεί.
Τα εξωτερικά συστήματα προσθέτουν τις δικές τους ρυθμίσεις, για παράδειγμα:
Μην αντιγράφετε ενδεικτικούς χρήστες ή κωδικούς πρόσβασης στο σύστημα παραγωγής. Αντιστοιχίστε ρητά την πρόσβαση διαχειριστή και δοκιμάστε τόσο έναν απλό χρήστη όσο και έναν διαχειριστή. Δείτε Έλεγχος ταυτότητας.
Έλεγχος πρόσβασης¶
Οι ρυθμίσεις στο $auth ελέγχουν τη δημόσια ορατότητα και την προνομιακή συμπεριφορά κράτησης:
$auth['deny_public_access'] = true;
$auth['only_admin_can_book'] = false;
$auth['admin_must_obey_policies'] = true;
Ελέγξτε μαζί τις σχετικές ρυθμίσεις. Το δημόσιο ημερολόγιο, οι δημόσιες αναφορές, η λειτουργία περιπτέρου και οι ιδιωτικές κρατήσεις ενδέχεται να εκθέτουν διαφορετικές πληροφορίες.
Ημερολόγιο και διεπαφή¶
Οι κοινές παγκόσμιες παρακάμψεις περιλαμβάνουν:
$default_view = 'week';
$weekstarts = 1; // Monday
$display_mincals = true;
$show_timeline = true;
$kiosk_mode_enabled = false;
Η μορφοποίηση ημερομηνίας και ώρας είναι ενήμερη για τις τοπικές ρυθμίσεις. Αντιγράψτε την πλήρη σχετική καταχώριση $datetime_formats κατά την παράκαμψη μιας μορφής αντί για μερική ανακατασκευή της.
Κανόνες κράτησης¶
Πολλοί κανόνες κράτησης ανήκουν σε μια περιοχή και διαχειρίζονται στη βάση δεδομένων. Οι παγκόσμιες ρυθμίσεις μπορούν να επιβάλλουν όρια σε όλες τις περιοχές ή να περιορίσουν τις δυνατότητες.
Διατηρήστε τις παρακάμψεις πολιτικής σε μια ενότητα με σαφή ετικέτα και τεκμηριώστε τον επιχειρηματικό λόγο:
// Facilities policy: every user may hold at most 20 future bookings.
$max_per_interval_global_enabled['future'] = true;
$max_per_interval_global['future'] = 20;
Δοκιμάστε επαναλαμβανόμενες, πολυήμερες κρατήσεις και κρατήσεις διαχειριστή στο όριο πολιτικής.
Email¶
Επιλέξτε μια μέθοδο αποστολής και ρυθμίστε τον αποστολέα, τους παραλήπτες, τα συμβάντα και τη μεταφορά:
$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';
Διατηρήστε την επαλήθευση πιστοποιητικού ενεργοποιημένη. Δείτε Ειδοποιήσεις μέσω email.
Γλώσσα και τοπική διατύπωση¶
Ορίστε μια σταθερή προεπιλεγμένη γλώσσα μόνο όταν η διαπραγμάτευση του προγράμματος περιήγησης δεν είναι κατάλληλη:
Παράκαμψη μεμονωμένων ετικετών χωρίς επεξεργασία 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';
Η χρήση του $vocab_override διατηρεί την τοπική διατύπωση κατά τη διάρκεια των αναβαθμίσεων. Η πλήρης ροή εργασίας καλύπτεται στο Κείμενο και μεταφράσεις.
Προσαρμοσμένα πεδία¶
Οι προσαρμοσμένες στήλες βάσης δεδομένων μπορούν να επισημανθούν και να διαμορφωθούν μέσω της διαμόρφωσης:
$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;
Οι αλλαγές στη βάση δεδομένων πρέπει να ολοκληρωθούν πρώτα. Μια προσαρμοσμένη στήλη entry απαιτεί την ίδια στήλη στο repeat. Ανατρέξτε στο Προσαρμοσμένα πεδία για υποστηριζόμενους τύπους, παραδείγματα σχημάτων, επικύρωση, απόρρητο, σειρά πεδίου και δοκιμές.
Φόρτωση ευαίσθητων δεδομένων από άλλο αρχείο¶
Το config.inc.php μπορεί να περιλαμβάνει άλλο αρχείο, αλλά η διαδρομή πρέπει να είναι απόλυτη:
Το αρχείο που συμπεριλαμβάνεται πρέπει να επιστρέφει ή να εκχωρεί μόνο τις αναμενόμενες τιμές και να είναι αναγνώσιμο από τη διεργασία της PHP. Διατηρήστε το έξω από τον δημόσιο κατάλογο του διακομιστή ιστού.
Οι μεταβλητές περιβάλλοντος μπορούν επίσης να διαβαστούν ρητά:
Επιβεβαιώστε ότι η απαιτούμενη τιμή υπάρχει, αντί να αποδέχεστε σιωπηρά μια κενή ευαίσθητη τιμή.
Multisite¶
Η λειτουργία πολλαπλών ιστότοπων χρησιμοποιεί καθολική διαμόρφωση μαζί με διαμόρφωση ανά ιστότοπο στον κατάλογο sites/<site>/. Κάθε ιστότοπος χρειάζεται τουλάχιστον το δικό του πρόθεμα πινάκων:
Ο έλεγχος ταυτότητας, η αλληλογραφία, το θέμα και άλλες ρυθμίσεις μπορεί να διαφέρουν ανά τοποθεσία. Δείτε Multisite.
Εντοπισμός σφαλμάτων¶
Ενεργοποιήστε τη συμπεριφορά εντοπισμού σφαλμάτων μόνο προσωρινά και μην την εκθέτετε ποτέ σε μη αξιόπιστους χρήστες. Η έξοδος εντοπισμού σφαλμάτων για συγκεκριμένη ενσωμάτωση μπορεί να περιέχει δεδομένα καταλόγου, κεφαλίδες, λεπτομέρειες διακομιστή αλληλογραφίας ή προσωπικές πληροφορίες.
Διατηρήστε την καταγραφή διαπιστευτηρίων απενεργοποιημένη:
Ασφαλής συντήρηση για αναβάθμιση¶
Για κάθε αναβάθμιση MRBS:
- Δημιουργήστε αντίγραφα ασφαλείας της ενεργής διαμόρφωσης.
- Ξεκινήστε από το
config.inc.php-sampleτης νέας κυκλοφορίας. - Συγκρίνετε παλιές παρακάμψεις με νέες προεπιλογές.
- Μεταφέρετε μόνο σκόπιμες ρυθμίσεις.
- Καταργήστε τις παρωχημένες μεταβλητές που αναφέρθηκαν από ελέγχους συμβατότητας.
- Εκτελέστε επικύρωση σύνταξης και λειτουργικές δοκιμές.
Αποφύγετε την αντιγραφή όλων των παλιών προεπιλογών στη νέα διαμόρφωση. Με αυτόν τον τρόπο θα αποκρύπτονταν οι νέες προεπιλογές και θα δυσκόλευαν οι επόμενες αναβαθμίσεις.
Λίστα ελέγχου επικύρωσης¶
Στη συνέχεια επαληθεύστε:
- εκδόσεις εφαρμογής και βάσης δεδομένων στη Βοήθεια·
- σύνδεση βάσης δεδομένων και πρόθεμα πίνακα.
- ζώνη ώρας της αίθουσας και συμπεριφορά κατά τις μεταβάσεις θερινής ώρας·
- σύνδεση, αποσύνδεση, λήξη και αντιστοίχιση διαχειριστή.
- δημόσιες και ιδιωτικές προβολές·
- δημιουργία, επεξεργασία, διαγραφή, επανάληψη και όρια πολιτικής.
- αποστολέας email, παραλήπτες και TLS,
- αναφορές, εξαγωγές, λειτουργία περιπτέρου και πολλαπλούς ιστότοπους, όπου χρησιμοποιούνται· και
- αρχεία καταγραφής χωρίς κωδικούς πρόσβασης ή προσωπικά δεδομένα.
Προτεινόμενη διάταξη αρχείου¶
Διατηρήστε το αρχείο σύντομο και ομαδοποιημένο:
<?php
declare(strict_types=1);
namespace MRBS;
// Timezone
$timezone = 'Europe/Berlin';
// Database
$dbsys = 'mysql';
// ...
// Authentication
$auth['type'] = 'db';
$auth['session'] = 'php';
// Site-specific overrides
// ...
Κάθε μη προφανής παράκαμψη πρέπει να εξηγεί γιατί τη χρειάζεται η εγκατάσταση.