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.
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:
systemdefaults.inc.phpareadefaults.inc.phpconfig.inc.phpsite_config.inc- 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:
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¶
veya:
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:
PostgreSQL çeşitli şemalara sahip kurulumlar şunları ayarlayabilir:
Tablo öneki yüklü şemayla eşleşmelidir:
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.
Harici sistemler kendi ayarlarını ekler, örneğin:
Ö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:
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:
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:
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:
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:
Yükseltme güvenli bakım¶
Her MRBS yükseltme için:
- Etkin yapılandırmayı yedekleyin.
- Yeni sürümün
config.inc.php-sample'sinden başlayın. - Eski geçersiz kılmaları yeni varsayılanlarla karşılaştırın.
- Yalnızca kasıtlı ayarları aktarın.
- Uyumluluk kontrolleri tarafından bildirilen eski değişkenleri kaldırın.
- 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¶
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.