config.inc.php の詳細¶
web/config.inc.php は、MRBS のインストール所有の設定ファイルです。これにはサイト固有の動作が含まれており、通常はシークレットが含まれています。これをアプリケーションのソース ファイルとしてではなく、運用設定として扱います。
ファイルを作成する¶
MRBS は web/config.inc.php-sample を出荷しますが、アクティブな config.inc.php は意図的に出荷しません。
同じMRBS リリースのサンプルから始めます。古いサンプルをそのまま持ち越さないでください。
設定のロード方法¶
共有ブートストラップは次の順序で設定を読み込みます。
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 ブール値を使用します。
$mail_settings['disabled'] = false; // Correct
$mail_settings['disabled'] = "false"; // Wrong: this is a non-empty string
配列では、サポートされている PHP 構文のいずれかを使用できます。
終了タグ ?> を追加しないでください。偶発的な出力が発生したり、ヘッダーや Cookie が壊れたりする可能性があります。
最低限の設定¶
新しいサイトには通常、部屋のタイムゾーンとデータベース接続が必要です。
$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 ソケットを選択できます。 MySQL に TCP を強制するには、127.0.0.1 を使用します。非標準ポートは個別に指定できます。
PostgreSQL 複数のスキーマを使用したインストールでは、以下を設定できます。
テーブルのプレフィックスは、インストールされているスキーマと一致する必要があります。
永続的な接続はデフォルトでは無効になっています。実際のニーズを測定し、トランザクションやロックとの相互作用を理解した後でのみ、それらを有効にしてください。
URLとリバースプロキシの設定¶
MRBS は通常、リクエストから URL を取得します。リバース プロキシ、パス プレフィックス、または異常な仮想ホスト設定により信頼性が低下する場合は、関連する URL 設定を systemdefaults.inc.php からコピーし、明示的なパブリック ベースを設定します。
外部 URL は、ユーザーに表示されるスキームとホストを使用する必要があります。信頼できるスキームとホスト情報を渡し、信頼できないホスト ヘッダーを拒否するようにプロキシを設定します。
URL の動作を変更した後、以下をテストします。
- ログイン後のリダイレクト。
- 電子メール内のリンク。
- iCalendar URL。
- キオスクの出口リンク。
- マルチサイトリンク。
- HTTP-to-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 エントリを完全にコピーしてください。
予約ルール¶
多くの予約ルールはエリアに属し、データベースで管理されます。グローバル設定では、エリア全体に制限を課したり、機能を制限したりできます。
ポリシーのオーバーライドを明確にラベル付けされた 1 つのセクションにまとめ、ビジネス上の理由を文書化します。
// Facilities policy: every user may hold at most 20 future bookings.
$max_per_interval_global_enabled['future'] = true;
$max_per_interval_global['future'] = 20;
定期的な予約、複数日の予約、および管理者の予約をポリシーの境界でテストします。
電子メール¶
送信方式を選択し、送信者、受信者、イベント、通信を設定します。
$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';
証明書の検証を有効にしておきます。 電子メール通知 を参照してください。
言語と現地の言葉遣い¶
ブラウザーのネゴシエーションが不適切な場合にのみ、固定のデフォルト言語を設定します。
編集せずに個々のラベルをオーバーライドします 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 の実行ユーザーが読み取れるようにします。Web サーバーの公開ディレクトリ外に配置してください。
環境変数は明示的に読み取ることもできます。
空のシークレットを黙って受け入れるのではなく、必要な値が存在することを検証します。
マルチサイト¶
マルチサイトでは、グローバル設定と sites/<site>/ のサイト固有の設定が使用されます。少なくとも、すべてのサイトに分離テーブル プレフィックスが必要です。
認証、メール、テーマ、その他の設定はサイトによって異なる場合があります。 マルチサイト を参照してください。
デバッグ¶
デバッグ動作を一時的にのみ有効にし、信頼できないユーザーに公開しないでください。統合固有のデバッグ出力には、ディレクトリ データ、ヘッダー、メール サーバーの詳細、または個人情報が含まれる場合があります。
認証情報のログを無効のままにします。
アップグレード時の安全なメンテナンス¶
MRBS のアップグレードごとに:
- アクティブな設定をバックアップします。
- 新しいリリースの
config.inc.php-sampleから始めてください。 - 古いオーバーライドを新しいデフォルトと比較します。
- 意図的な設定のみを転送します。
- 互換性チェックによって報告された古い変数を削除します。
- 構文検証と機能テストを実行します。
古いデフォルトを完全に新しい設定にコピーすることは避けてください。これにより、新しいデフォルトが非表示になり、後のアップグレードが困難になります。
検証チェックリスト¶
次に、次のことを確認します。
- アプリケーションとデータベースのバージョンはヘルプにあります。
- データベース接続とテーブルの接頭辞。
- 部屋のタイムゾーンと夏時間の動作。
- ログイン、ログアウト、有効期限、および管理者のマッピング。
- パブリックビューとプライベートビュー。
- 作成、編集、削除、繰り返し、およびポリシー境界。
- 電子メールの送信者、受信者、および 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
// ...
明白でないオーバーライドはすべて、インストールにそれが必要な理由を説明する必要があります。