Langkau tajuk talian

config.inc.php secara mendalam

web/config.inc.php ialah fail konfigurasi milik pemasangan untuk MRBS. Ia mengandungi tingkah laku khusus tapak dan biasanya mengandungi rahsia. Anggap ia sebagai konfigurasi pengeluaran, bukan sebagai fail sumber aplikasi.

Buat fail

MRBS menghantar web/config.inc.php-sample, tetapi sengaja tidak menghantar config.inc.php yang aktif.

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

Mulakan dengan sampel daripada keluaran MRBS yang sama. Jangan bawa sampel lama ke hadapan tidak berubah.

Cara konfigurasi dimuatkan

Bootstrap kongsi memuatkan konfigurasi dalam susunan ini:

  1. systemdefaults.inc.php
  2. areadefaults.inc.php
  3. config.inc.php
  4. site_config.inc
  5. pengesahan dalaman dan pengendalian keserasian

Tugasan kemudian mengatasi tugasan yang lebih awal. Inilah sebabnya mengapa config.inc.php pendek boleh menggantikan lalai aplikasi tanpa mengubah suai fail keluaran.

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

Nilai lokasi yang telah disimpan dalam pangkalan data diedit melalui Bilik. Menukar areadefaults.inc.php atau menimpa dalam config.inc.php tidak menulis semula lokasi sedia ada.

PHP sintaks

Konfigurasi boleh dilaksanakan PHP. Setiap pernyataan berakhir dengan koma bertitik. Rentetan boleh menggunakan petikan tunggal atau berganda:

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

Gunakan PHP boolean sebenar, bukan rentetan:

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

Tatasusunan boleh menggunakan sama ada sintaks PHP yang disokong:

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

Jangan tambahkan teg penutup ?>. Ia boleh memperkenalkan output tidak sengaja dan memecahkan tajuk atau kuki.

Tetapan minimum

Tapak baharu biasanya memerlukan zon waktu bilik dan sambungan pangkalan data:

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

Gunakan zon waktu di mana bilik berada. Ia boleh berbeza daripada zon waktu pelayan.

Konfigurasi pangkalan data

Pilih pangkalan data

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

atau:

$dbsys = 'pgsql'; // PostgreSQL

Tingkah laku sambungan

localhost boleh memilih soket Unix bergantung pada pemandu. Gunakan 127.0.0.1 untuk memaksa TCP untuk MySQL. Port bukan standard boleh ditentukan secara berasingan:

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

PostgreSQL pemasangan dengan beberapa skema boleh ditetapkan:

$db_schema = 'public';

Awalan jadual mesti sepadan dengan skema yang dipasang:

$db_tbl_prefix = 'mrbs_';

Sambungan berterusan dilumpuhkan secara lalai. Dayakan mereka hanya selepas mengukur keperluan sebenar dan memahami interaksi mereka dengan transaksi dan kunci.

URL dan tetapan proksi terbalik

MRBS biasanya memperoleh URLnya daripada permintaan. Apabila proksi terbalik, awalan laluan atau persediaan hos maya yang luar biasa menjadikan ini tidak boleh dipercayai, salin tetapan URL yang berkaitan daripada systemdefaults.inc.php dan tetapkan pangkalan awam yang jelas.

URL luaran mesti menggunakan skema dan hos yang dilihat oleh pengguna. Konfigurasikan proksi untuk menghantar maklumat skim dan hos yang dipercayai, dan tolak pengepala hos yang tidak dipercayai.

Selepas menukar tingkah laku URL, uji:

  • ubah hala selepas log masuk;
  • pautan dalam e-mel;
  • URL iCalendar;
  • pautan keluar kiosk;
  • pautan berbilang tapak; dan
  • HTTP-ke-HTTPS ubah hala.

Pengesahan dan sesi

Pengesahan mengesahkan identiti; kaedah sesi memperoleh dan mengekalkannya.

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

Sistem luaran menambah tetapan mereka sendiri, contohnya:

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

Jangan salin contoh pengguna atau kata laluan ke dalam pengeluaran. Akses pentadbir peta secara eksplisit dan uji pengguna biasa serta pentadbir. Lihat Pengesahan.

Kawalan capaian

Tetapan di bawah $auth mengawal keterlihatan awam dan tingkah laku tempahan istimewa:

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

Semak tetapan berkaitan bersama-sama. Kalendar awam, laporan awam, kiosk dan tempahan peribadi boleh mendedahkan maklumat yang berbeza.

Kalendar dan antara muka

Penggantian global biasa termasuk:

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

Pemformatan tarikh dan masa adalah sedar setempat. Salin entri $datetime_formats lengkap yang berkaitan apabila mengatasi format dan bukannya membina semula sebahagiannya.

Peraturan tempahan

Banyak peraturan tempahan tergolong dalam lokasi dan ditadbir dalam pangkalan data. Tetapan global boleh mengenakan had merentas lokasi atau menyekat keupayaan.

Simpan penggantian dasar dalam satu bahagian yang dilabel dengan jelas dan dokumenkan sebab perniagaan:

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

Uji tempahan berulang, berbilang hari dan pentadbir di sempadan dasar.

E-mel

Pilih kaedah penghantaran dan konfigurasikan pengirim, penerima, acara serta sambungan:

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

Pastikan pengesahan sijil didayakan. Lihat Pemberitahuan e-mel.

Bahasa dan perkataan tempatan

Tetapkan bahasa lalai tetap hanya apabila rundingan penyemak imbas tidak sesuai:

$default_language_tokens = 'de';

Gantikan label individu tanpa menyunting 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';

Menggunakan $vocab_override mengekalkan perkataan tempatan semasa naik taraf. Aliran kerja lengkap diliputi dalam Teks dan terjemahan.

Medan tersuai

Lajur pangkalan data tersuai boleh dilabel dan dibentuk melalui konfigurasi:

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

Perubahan pangkalan data mesti diselesaikan terlebih dahulu. Lajur tersuai entry memerlukan lajur yang sama dalam repeat. Lihat Medan tersuai untuk jenis yang disokong, contoh skema, pengesahan, privasi, susunan medan dan ujian.

Sertakan rahsia dari fail lain

config.inc.php boleh memasukkan fail lain, tetapi laluan mestilah mutlak:

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

Fail yang disertakan harus mengembalikan atau menetapkan nilai yang dijangkakan sahaja dan boleh dibaca oleh persekitaran PHP. Simpan di luar direktori awam pelayan web.

Pembolehubah persekitaran juga boleh dibaca secara eksplisit:

$db_password = getenv('MRBS_DB_PASSWORD');

Sahkan bahawa nilai yang diperlukan wujud dan bukannya menerima rahsia kosong secara senyap.

Berbilang tapak

Multisite menggunakan konfigurasi global serta konfigurasi khusus tapak di bawah sites/<site>/. Sekurang-kurangnya, setiap tapak memerlukan awalan jadual terpencil:

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

Pengesahan, mel, tema dan tetapan lain boleh berbeza mengikut tapak. Lihat Berbilang tapak.

Penyahpepijatan

Dayakan gelagat nyahpepijat hanya buat sementara waktu dan jangan sekali-kali mendedahkannya kepada pengguna yang tidak dipercayai. Output nyahpepijat khusus integrasi boleh mengandungi data direktori, pengepala, butiran pelayan mel atau maklumat peribadi.

Pastikan pengelogan kelayakan dilumpuhkan:

$auth['log_credentials'] = false;

Penyelenggaraan selamat naik taraf

Untuk setiap peningkatan MRBS:

  1. Sandarkan konfigurasi aktif.
  2. Mulakan daripada keluaran baharu config.inc.php-sample.
  3. Bandingkan penggantian lama dengan lalai baharu.
  4. Pindahkan tetapan yang disengajakan sahaja.
  5. Alih keluar pembolehubah usang yang dilaporkan oleh semakan keserasian.
  6. Jalankan pengesahan sintaks dan ujian berfungsi.

Elakkan menyalin lalai lama yang lengkap ke dalam konfigurasi baharu; yang menyembunyikan lalai baharu dan menyukarkan peningkatan kemudian.

Senarai semak pengesahan

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

Kemudian sahkan:

  • versi aplikasi dan pangkalan data pada Help;
  • sambungan pangkalan data dan awalan jadual;
  • zon waktu bilik dan tingkah laku penjimatan siang;
  • log masuk, log keluar, tamat tempoh, dan pemetaan pentadbir;
  • pandangan awam dan peribadi;
  • buat, edit, padam, ulangan dan sempadan dasar;
  • penghantar e-mel, penerima dan TLS;
  • laporan, eksport, kiosk dan pelbagai tapak di mana digunakan; dan
  • log tanpa kata laluan atau data peribadi.

Susun atur fail yang disyorkan

Pastikan fail pendek dan dikumpulkan:

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

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

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

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

// Site-specific overrides
// ...

Setiap penggantian yang tidak jelas harus menjelaskan sebab pemasangan memerlukannya.