よくある質問¶
この FAQ は、MRBS と PHP に関する未解決および解決済みのサポート Issue から、繰り返し寄せられる質問をまとめたものです。回答は MRBS 1.12.2 に照らして確認しています。古い回避策は、Issue に一度登場したという理由だけでは掲載していません。
この FAQ が選ばれた経緯¶
このレビューでは、次のラベルのいずれかが付いた Issue を対象としました: Help, Help from scratch, LDAP help need, Problems with room's capacity, support, spanish help, support request, help wanted, custom view help。
2026 年 7 月 26 日時点で、support request ラベルだけでも 3,076 件(未解決 1,590 件、解決済み 1,486 件)の Issue がありました。その多くは、移行された過去の事例、一度限りのカスタマイズ、機能要望、または回答が確認できない質問です。ここでは、バージョン 1.12.2 にも当てはまる、繰り返し寄せられる質問だけを取り上げます。Issue へのリンクは出典を示すものであり、現在の設定リファレンスに代わるものではありません。
設置と診断¶
空白のページまたは HTTP 500 が表示されるのはなぜですか?¶
まず、Web サーバーと PHP エラー ログを読んでください。空白のページは目に見える症状にすぎません。有用なエラーは通常、ログに記録されます。次に、次のことを確認します。
- サポートされているPHP バージョンと必要な拡張子。
config.inc.phpとphp -l config.inc.php;- データベース接続と一致する PDO ドライバー。
- ファイル権限とアクティブな PHP 設定。
- 失敗したリクエストが意図した MRBS インストールに到達したかどうか。
運用システム上でパブリック PHP エラー表示を有効にしたり、問題に資格情報を貼り付けたりしないでください。 トラブルシューティング を参照してください。元の サポートケース #1007 には製品固有の修正が確認されていなかったため、この回答はローカル ログからの証拠から始まります。
cPanel または共有ホスティングでデータベースへのログインが失敗するのはなぜですか?¶
ホスティング コントロール パネルによって作成された正確なデータベースとユーザー名を使用します。 cPanel では、両方の接頭辞としてホスティング アカウント名が付けられることがよくあります。また、ユーザーがそのデータベースに対する権限を持っていることも確認してください。 SQLSTATE[28000] または「ユーザーのアクセスが拒否されました」は、MRBS テーブル エラーではなく、データベース認証または許可エラーです。
$db_database、$db_login、$db_password をコントロール パネルの値と一致させてください。接続が成功した後にのみスキーマを作成してください。 問題 #3801 および インストール を参照してください。
設定を変更しても効果がないのはなぜですか?¶
この展開およびサイトによってロードされた config.inc.php を編集したことを確認してください。後で割り当てられた値は、以前の値をオーバーライドします。既存のエリアに保存された設定はデータベースに保存されます。 areadefaults.inc.php を変更すると、新しいエリアのデフォルトのみが変更されます。マルチサイト モードでは、選択したサイトとその設定を確認します。最後に、該当する場合、PHP オペコードキャッシュをクリアまたは再起動します。
config.inc.phpの詳細 および トラブルシューティング を参照してください。
ログインと LDAP¶
カレンダーを表示する前にユーザーにサインインを要求するにはどうすればよいですか?¶
設定:
サインアウトしたビューをプライベート ブラウザ ウィンドウでテストします。この設定により、公開カレンダーへのアクセスがブロックされます。認証方式の選択や設定は行いません。 問題 #3979 および ユーザーと権限 を参照してください。
MRBS で PHP の LDAP 拡張機能がないと表示されるのはなぜですか?¶
Web サーバーが使用する PHP 実行環境に LDAP 拡張機能をインストールまたは有効化し、そのサービスを再起動します。コマンドライン版と Web サーバー版の PHP では、異なる php.ini が読み込まれることがあります。php -m の結果だけに頼らず、Web 側の実行環境を確認してください。パッケージ名と再起動コマンドは、OS と PHP の導入方法によって異なります。
問題 #1022 および LDAP 認証 を参照してください。
正しい LDAP ベース DN とユーザー DN を見つけるにはどうすればよいですか?¶
組織名からディレクトリ ツリーを推測しないでください。 MRBS が使用する同じサーバー、TLS モード、ベース DN、検索 ID、およびユーザー名属性を使用して、ldapsearch などのLDAP クライアントでクエリを実行します。 Active Directory は通常、sAMAccountName を使用します。 OpenLDAP は一般的に uid を使用しますが、ディレクトリ スキーマには権限があります。
エンドユーザーのバインドとは別に検索 ID をテストし、バインド パスワードを公開しないでください。 問題 #1083 の根本原因は、間違った DN でした。
LDAP アクセスをグループに制限するにはどうすればよいですか?¶
$ldap_filter を使用して、ユーザーが MRBS にアクセスできるディレクトリを決定します。メンバーシップがユーザー オブジェクトに保存されている Active Directory レイアウトの場合、フィルターは memberof に一致します。メンバーシップがグループ オブジェクトに保存される OpenLDAP スタイルのレイアウトの場合、$ldap_filter_base_dn、$ldap_filter_user_attr、および適切な $ldap_filter を設定します。
ディレクトリの正確な DN と属性名を使用し、許可されたアカウントと拒否されたアカウントをテストし、ネストされたグループがどのように動作するかを確認します。これらのアクセス フィルターは、MRBS 管理者を識別する $ldap_admin_group_dn とは別のものです。 問題 #2033 および LDAP 認証 を参照してください。
LDAP ログインは機能します。ユーザーが MRBS 管理者ではないのはなぜですか?¶
$ldap_admin_group_dn が設定されている場合、MRBS は $auth['admin'] の代わりにそのグループを使用します。確認する:
- 完全なグループ DN。
- デフォルトでは
$ldap_group_member_attrib—memberof。 - LDAP 検索 ID がユーザーのメンバーシップ属性を読み取る可能性があること。
- ディレクトリが直接のメンバーシップを返すか、ネストされたメンバーシップを返すか。
保護されたテスト環境でのみ LDAP 診断を一時的に有効にし、その後削除します。 問題 #3943 では、検索 ID は最初に必要なグループ情報を読み取ることができませんでした。
パスワード バインドは機能するのに、MRBS アップグレード後に LDAP が失敗するのはなぜですか?¶
現在の MRBS では、ユーザーの DN と、表示名や電子メールなどの属性を検索する必要がある場合があります。匿名検索が利用できない場合は、次のように設定します。
$ldap_dn_search_attrib = 'sAMAccountName'; // use the directory's real attribute
$ldap_dn_search_dn = 'search-account@example.org';
$ldap_dn_search_password = 'read-from-a-protected-secret';
検索 ID には、必要な読み取りアクセス許可のみを与えます。パスワードはドキュメント ルートの外に保持し、保護された設定ファイルから含めてください。 問題 #3895 を参照してください。
MRBS は複数の LDAP ディレクトリを検索できますか?¶
はい。 $ldap_host、$ldap_port、$ldap_base_dn などの多くの LDAP 設定と検索属性は配列にすることができます。 1 つの配列対応 LDAP パラメーターが配列の場合、すべての配列対応パラメーターは同じ数の要素 (ディレクトリごとに 1 つ) を持つ必要があります。
各ディレクトリのログイン、属性検索、アクセス フィルタ、および管理者のマッピングをテストします。 問題 #3981 およびsystemdefaults.inc.php の LDAP セクションを参照してください。
予約、部屋、権限¶
カスタム予約フィールドが 1 つの予約では機能するのに、一連の予約では機能しないのはなぜですか?¶
予約用のカスタム列は、entry と repeat の両テーブルに、同じ名前、型、長さ、NULL の可否、デフォルト値で作成する必要があります。2 つの列を 1 組のスキーマ変更として扱ってください。
問題 #3986 および カスタムフィールド を参照してください。
参加者数が部屋の定員を超えると予約できなくなりますか?¶
いいえ。部屋 capacity の値は、MRBS によって表示される部屋のメタデータです。予約の参加者数と自動的に比較されることはありません。サイトでこのルールを強制する必要がある場合は、同一の参加者数カスタム フィールドを entry と repeat に追加し、サーバー側検証を実装して維持します。クライアント側の検証だけでは不十分です。
登録が有効な場合、そのイベント容量によってそのイベントの登録が制御されます。適切なサイズの部屋が自動的に選択されるわけではありません。 問題 #1055、エリアと部屋、および カスタムフィールド を参照してください。
1つのエリアで午前中は30分枠、その後は15分枠を利用できますか?¶
標準のエリア設定では実現できません。1 つのエリアで使用できる時間単位は 1 種類です。終日で必要となる最小の時間単位を使うか、リソースと運用方法が許せば別のエリアを作成してください。時間帯によって時間単位を変えるには、独自のコード変更を継続的に保守する必要があります。
問題 #4011 を参照してください。
予約作成者に「編集」または「削除」が表示されないのはなぜですか?¶
部屋 から既存エリアの予約ポリシーを確認してください。編集可能な期間や過去の予約に関する制限により、作成者にも編集・削除操作が表示されないことがあります。ログイン中のユーザー、予約の所有者、管理者権限、および対象が単発の予約か繰り返し予約かも確認します。
areadefaults.inc.php を変更しても、既存のエリアは更新されません。 問題 #3994 および 予約ポリシー を参照してください。
マルチ部屋予約で選択された部屋は永続的にリンクされますか?¶
いいえ。MRBS は部屋ごとに独立した予約を作成します。後で 1 件を編集または削除しても、ほかの予約と永続的に連動することはありません。作成・編集・削除のすべてで一覧を同期する仕組みをサイト側で保守しない限り、選択した全部屋の一覧を各予約の説明へ自動的にコピーしないでください。
問題 #2223 を参照してください。
さらにアクセス レベルを追加したり、カスタム ロールにレポート アクセスのみを付与したりできますか?¶
標準 MRBS は、アクセス レベル 0、1、および 2 を使用します。追加の数値ロールとページ固有の権限には、アップグレードのたびにローカル認証のカスタマイズ、テスト、レビューが必要です。古い問題からのパッチはサポートされている設定オプションではありません。
要件を満たす場合は、標準的なエリア/部屋の委任と、狭い許可リストを使用したパブリック レポートを優先します。 問題 #3999 および ユーザーと権限 を参照してください。
メール、言語、時間¶
電子メールのデバッグで「受信者がいません」と報告されるのはなぜですか?¶
少なくとも 1 つの対象受信者の役割を有効にします。
$mail_settings['admin_on_bookings'] = true;
$mail_settings['area_admin_on_bookings'] = true;
$mail_settings['room_admin_on_bookings'] = true;
$mail_settings['booker'] = true;
最初のオプションを使う場合は、$mail_settings['recipients'] を設定します。エリア管理者と部屋管理者のメールアドレスは MRBS で最新の状態に保ってください。予約者へ通知する場合、LDAP ユーザーには読み取り可能で正しくマッピングされたメール属性が必要です。そのうえで、予約の作成、変更、削除を個別にテストします。
問題 #3795 および 電子メール通知 を参照してください。
$override_locale にはどの値を使用すればよいですか?¶
オペレーティング システムのロケール文字列ではなく、en、en-GB、de、fr、es などの BCP 47 言語タグを使用します。サーバーには適切なロケール データがまだ必要です。 Unix 系システムでは、locale -a はインストールされているロケールを示します。
MRBS 自動選択を使用するには、$override_locale を空のままにしておきます。 問題 #3984 および テキストと翻訳 を参照してください。
表示時間がちょうど 1 時間間違っているのはなぜですか?¶
順番に確認してください:
- 部屋とエリアのタイムゾーン。
- グローバル
$timezone; - PHP のタイムゾーンとタイムゾーンデータパッケージ。
- 影響を受ける日付の夏時間への移行。
- 保存されているタイムスタンプが間違っているのか、その表示だけが間違っているのか。
固定 UTC オフセットではなく、Europe/Berlin などの IANA タイムゾーンを使用します。古い問題には、バージョン固有の書式設定の回避策が記載されています。 $force_strftime は MRBS 1.12.2 の設定ではないため、問題 #3967 からコピーしてはなりません。 トラブルシューティング を参照してください。
ヘルプ ページとインターフェイス テキストをカスタマイズまたは翻訳するにはどうすればよいですか?¶
アプリケーション内のヘルプ ページは、web/site_faq/ からロードされます。たとえば、スペイン語では site_faq_es.html が使用されます。言語を明示的に選択する必要がある場合は、$faqfilelang = 'es' を設定します。サポートされている言語ごとに完全に翻訳されたファイルを保存します。
インターフェースを簡単に変更する場合は、web/lang/lang.* を編集する代わりに、config.inc.php で $vocab_override[LANG][TOKEN] を使用します。カスタム データベース フィールドは、entry.catering などのトークンを使用します。
問題 #2432 および テキストと翻訳 を参照してください。
レポート、マルチサイト、カスタマイズ¶
スケジュールされたジョブでレポートまたは iCalendar データをエクスポートするにはどうすればよいですか?¶
未認証の GET レポートはデフォルトで無効になっています。この方法で情報が公開される可能性がある場合は、意図的に有効にし、次のように制限してください。
$report_unauthenticated_get_enabled = true;
$report_keys_enabled = true;
$report_keys = ['a-long-random-secret'];
$report_open_areas = [1];
$report_open_rooms = [];
推測できないキー、必要最小限のエリア/部屋の許可リスト、HTTPS、および保護されたスケジューラを使用します。ログアウトした状態で実際の出力を確認してください。レポート URL は実質的に認証情報であり、ログや閲覧履歴から漏れる可能性があります。
問題 #3742 および 検索とレポート を参照してください。
複数の MRBS サイトが 1 セットのテーブルを共有できますか?¶
いいえ、予約と設定を別々にする必要がある場合はその限りではありません。各サイトには、別個のデータベース内に、または共有データベース内に一意の $db_tbl_prefix を持つ独自の MRBS テーブルが必要です。コードは共有できますが、テーブル セットは重複してはなりません。
MRBS スキーマ スクリプトを使用してすべてのサイトのテーブルを作成し、そのプレフィックスを一貫して適用します。 問題 #3917 および マルチサイト を参照してください。
要求されたすべてのビューまたはテーマは設定を通じて利用可能ですか?¶
いいえ。特定のカレンダー レイアウトへの追加の部屋 テキストの挿入、独立した予約のリンク、アクセス レベルの追加、テーマ アーキテクチャの置き換えなどのリクエストには、コードの変更が必要になる場合があります。サポートの問題からパッチを適用する前に、次のことを行ってください。
- 1.12.2 に設定または拡張ポイントがすでに存在するかどうかを確認します。
- 変更は生成されたファイルとベンダー ファイルの外に保持します。
- 作成、編集、削除、プライバシー、権限のテストを追加します。
- 次回のアップグレードに備えてカスタマイズを記録します。
例には、カスタムビューの問題 #2223 や テーマリクエスト #22 などがあります。