Ana içeriğe geç

config.inc.php derinlemesine

web/config.inc.php, ilgili MRBS kurulumuna ait yapılandırma dosyasıdır. Siteye özgü davranışları belirler ve genellikle gizli bilgiler içerir. Bu dosyayı uygulama kaynak kodu olarak değil, üretim yapılandırması olarak değerlendirin.

Dosyayı oluştur

MRBS web/config.inc.php-sample'yi gönderiyor, ancak bilinçli olarak aktif bir config.inc.php'yi göndermiyor.

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

Aynı MRBS sürümündeki örnekle başlayın. Eski bir numuneyi değişmeden ileri taşımayın.

Yapılandırma nasıl yüklenir?

Paylaşılan önyükleme, yapılandırmayı şu sırayla yükler:

  1. systemdefaults.inc.php
  2. areadefaults.inc.php
  3. config.inc.php
  4. site_config.inc
  5. dahili doğrulama ve uyumluluk yönetimi

Daha sonraki ödevler daha önceki ödevleri geçersiz kılar. Bu nedenle kısa bir config.inc.php, sürüm dosyalarını değiştirmeden uygulama varsayılanlarını değiştirebilir.

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

Zaten veritabanında saklanan alan değerleri Salonlar aracılığıyla düzenlenir. areadefaults.inc.php'yi değiştirmek veya config.inc.php'yi geçersiz kılmak, mevcut alanları yeniden yazmaz.

PHP sözdizimi

Yapılandırma yürütülebilir PHP. Her ifade noktalı virgülle biter. Dizeler tek veya çift tırnak kullanabilir:

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

Dizeleri değil, gerçek PHP boole değerlerini kullanın:

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

Diziler desteklenen PHP sözdizimlerinden birini kullanabilir:

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

Kapanış ?> etiketi eklemeyin. Yanlışlıkla çıktı alınmasına neden olabilir ve başlıkları veya çerezleri bozabilir.

Minimum ayarlar

Yeni bir sitenin normalde bir oda saat dilimine ve veritabanı bağlantısına ihtiyacı vardır:

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

Odaların bulunduğu saat dilimini kullanın. Sunucu saat diliminden farklı olabilir.

Veritabanı yapılandırması

Veritabanını seçin

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

veya:

$dbsys = 'pgsql'; // PostgreSQL

Bağlantı davranışı

localhost sürücüye bağlı olarak bir Unix soketi seçebilir. TCP'yi MySQL'ye zorlamak için 127.0.0.1'yi kullanın. Standart olmayan bir bağlantı noktası ayrı olarak belirtilebilir:

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

PostgreSQL çeşitli şemalara sahip kurulumlar şunları ayarlayabilir:

$db_schema = 'public';

Tablo öneki yüklü şemayla eşleşmelidir:

$db_tbl_prefix = 'mrbs_';

Kalıcı bağlantılar varsayılan olarak devre dışıdır. Bunları yalnızca gerçek bir ihtiyacı ölçtükten ve işlemler ve kilitlerle etkileşimlerini anladıktan sonra etkinleştirin.

URL ve ters proxy ayarları

MRBS genellikle URL'sini istekten alır. Bir ters proxy, yol öneki veya olağandışı sanal ana bilgisayar kurulumu bunu güvenilmez hale getirdiğinde, ilgili URL ayarlarını systemdefaults.inc.php adresinden kopyalayın ve açık bir genel taban ayarlayın.

Harici URL, kullanıcılar tarafından görülen şemayı ve ana bilgisayarı kullanmalıdır. Proxy'yi güvenilir şema ve ana bilgisayar bilgilerini iletecek ve güvenilmeyen ana bilgisayar başlıklarını reddedecek şekilde yapılandırın.

URL davranışını değiştirdikten sonra şunları test edin:

  • giriş yaptıktan sonra yönlendirir;
  • e-postadaki bağlantılar;
  • iCalendar URL'leri;
  • kiosk çıkış bağlantıları;
  • çok siteli bağlantılar; Ve
  • HTTP-to-HTTPS yönlendirmeleri.

Kimlik doğrulama ve oturumlar

Kimlik doğrulama kimliği doğrular; oturum yöntemi onu alır ve korur.

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

Harici sistemler kendi ayarlarını ekler, örneğin:

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

Örnek kullanıcıları veya şifreleri üretime kopyalamayın. Yönetici erişimini açık bir şekilde eşleyin ve yöneticinin yanı sıra normal bir kullanıcıyı da test edin. Bakınız Kimlik doğrulama.

Erişim kontrolü

$auth altındaki ayarlar genel görünürlüğü ve ayrıcalıklı rezervasyon davranışını kontrol eder:

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

İlgili ayarları birlikte inceleyin. Genel bir takvim, genel bir rapor, kiosk ve özel rezervasyon farklı bilgileri açığa çıkarabilir.

Takvim ve arayüz

Yaygın genel geçersiz kılmalar şunları içerir:

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

Tarih ve saat biçimlendirmesi yerel ayarlara duyarlıdır. Bir formatı kısmen yeniden oluşturmak yerine geçersiz kılarken ilgili $datetime_formats girişinin tamamını kopyalayın.

Rezervasyon kuralları

Çoğu rezervasyon kuralı bir alana aittir ve veritabanında yönetilir. Küresel ayarlar, alanlar arasında sınırlamalar getirebilir veya yetenekleri kısıtlayabilir.

Politika geçersiz kılma işlemlerini açıkça etiketlenmiş tek bir bölümde tutun ve iş nedenini belgeleyin:

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

Yinelenen, çok günlü ve yönetici ayırmalarını politika sınırında test edin.

E-posta

Gönderim yöntemini seçin; göndereni, alıcıları, olayları ve bağlantıyı yapılandırın:

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

Sertifika doğrulamayı etkin tutun. Bakınız E-posta bildirimleri.

Dil ve yerel ifadeler

Yalnızca tarayıcı anlaşması uygun olmadığında sabit bir varsayılan dil ayarlayın:

$default_language_tokens = 'de';

Bireysel etiketleri düzenlemeden geçersiz kılın 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 kullanılması, yükseltmeler sırasında yerel ifadelerin korunmasını sağlar. İş akışının tamamı Metin ve çeviriler'de ele alınmaktadır.

Özel alanlar

Özel veritabanı sütunları yapılandırma yoluyla etiketlenebilir ve şekillendirilebilir:

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

Öncelikle veritabanı değişikliklerinin tamamlanması gerekir. entry özel sütunu, repeat'de aynı sütunun olmasını gerektirir. Desteklenen türler, şema örnekleri, doğrulama, gizlilik, alan sırası ve testler için Özel alanlar adresine bakın.

Başka bir dosyadaki gizli dizileri dahil et

config.inc.php başka bir dosya içerebilir ancak yol mutlak olmalıdır:

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

Eklenen dosya yalnızca beklenen değerleri döndürmeli veya atamalı ve PHP işlemi tarafından okunabilmelidir. Dosyayı web sunucusunun herkese açık belge kökünün dışında tutun.

Ortam değişkenleri ayrıca açıkça okunabilir:

$db_password = getenv('MRBS_DB_PASSWORD');

Boş bir sırrı sessizce kabul etmek yerine gerekli bir değerin var olduğunu doğrulayın.

Çok bölgeli

Çoklu site, genel yapılandırmanın yanı sıra sites/<site>/ altında siteye özel bir yapılandırma kullanır. En azından her sitenin yalıtılmış bir tablo önekine ihtiyacı vardır:

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

Kimlik doğrulama, posta, tema ve diğer ayarlar siteye göre farklılık gösterebilir. Bakınız Çok bölgeli.

Hata ayıklama

Hata ayıklama davranışını yalnızca geçici olarak etkinleştirin ve asla güvenilmeyen kullanıcılara maruz bırakmayın. Entegrasyona özgü hata ayıklama çıktısı, dizin verilerini, başlıkları, posta sunucusu ayrıntılarını veya kişisel bilgileri içerebilir.

Kimlik bilgileri günlüğünü devre dışı bırak:

$auth['log_credentials'] = false;

Yükseltme güvenli bakım

Her MRBS yükseltme için:

  1. Etkin yapılandırmayı yedekleyin.
  2. Yeni sürümün config.inc.php-sample'sinden başlayın.
  3. Eski geçersiz kılmaları yeni varsayılanlarla karşılaştırın.
  4. Yalnızca kasıtlı ayarları aktarın.
  5. Uyumluluk kontrolleri tarafından bildirilen eski değişkenleri kaldırın.
  6. Sözdizimi doğrulamasını ve işlevsel testleri çalıştırın.

Eski varsayılanların tamamını yeni konfigürasyona kopyalamaktan kaçının; bu, yeni varsayılanları gizler ve daha sonraki yükseltmeleri zorlaştırır.

Doğrulama kontrol listesi

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

Ardından şunu doğrulayın:

  • Help adresindeki uygulama ve veritabanı sürümleri;
  • veritabanı bağlantısı ve tablo öneki;
  • odanın saat dilimi ve gün ışığından yararlanma davranışı;
  • oturum açma, oturumu kapatma, süre sonu ve yönetici eşlemesi;
  • kamu ve özel görüşler;
  • sınırları oluşturma, düzenleme, silme, yineleme ve politika sınırları;
  • e-posta göndereni, alıcıları ve TLS;
  • kullanıldığı yerlerde raporlar, dışa aktarımlar, kiosk ve çoklu site; Ve
  • şifreler veya özel veriler olmadan günlükler.

Önerilen dosya düzeni

Dosyayı kısa ve gruplandırılmış tutun:

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

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

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

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

// Site-specific overrides
// ...

Açık olmayan her geçersiz kılma, kurulumun buna neden ihtiyaç duyduğunu açıklamalıdır.