利用しているデータベース(DB)への接続に、何らかの理由で失敗した場合、baserCMSでは以下のエラー表示画面となります。
DBサーバは、起動していれば常にOKというわけではなく、システムなので完璧100%稼働する保証はありません。
ときには過剰な負荷により接続できなくなったり、DBサーバ側でのDB名や接続情報の変更に伴い、影響を受けることもあり得ます。そういったときに表示される内容が、baserCMSの本体コア側で準備されています。
準備されている内容は、あくまで汎用的なシンプルな構成となっているため、利用しているウェブサイトのデザインに近づけておいたり、文言を変更しておくことで、閲覧者への案内に繋げることができます。
想定している対象者
- baserCMSでウェブサイトを制作をしている方
発生状況
- サーバ上に設置しているbaserCMSで、何らかの理由でDBへの接続が失敗する場面
環境
- baserCMS 4.5.5(※4系全般)
表示に利用されているファイル
- レイアウト側: /lib/Baser/View/Layouts/missing_connection.php
- コンテンツ部分側: /lib/Baser/View/Errors/missing_connection.php
対処
DB接続エラー時は、全体大枠のレイアウトとして /lib/Baser/View/Layouts/missing_connection.php が利用されます。
ですので、こちらのレイアウトファイルを /app/View/Layouts/ 配下にコピーした上で、内容・外観を調整しておくと良いです。
- /lib/Baser/View/Layouts/missing_connection.php
- → /app/View/Layouts/missing_connection.php
通常であればテーマ側のファイルが利用されますが、DB接続エラーの場合、そもそも利用しているDB内に保持しているテーマ情報の利用と取得がなされないため、オーバーライド機構の動作として以下のようになります。
- DB接続OK時
- テーマ側利用
- app側利用
- コア側利用
- DB接続NG時
- [不可]テーマ側利用
- app側利用
- コア側利用
baserCMSコア側のファイルを直接触っても良いですが、コア側のバージョンアップ時に上書きしてしまう可能性が高いため、app側に複製設置して利用しておくと良いです。
コンテンツ部分側においても同様となります。
- コンテンツ部分側: /lib/Baser/View/Errors/missing_connection.php
- → /app/View/Errors/missing_connection.php
DB接続エラー以外のエラーにも対応しておく
上記ではDB接続エラーに関しての対応手法となりますが、他のエラーに対しても同様の表示調整を行っておくことができます。
ただし、DB接続以外の場合、基本的にはテーマ側のエラー用ビューが利用されますのでご紹介だけ。
- レイアウト側: /lib/Baser/View/Layouts/error.php
- コンテンツ部分側: エラー内容に応じて /lib/Baser/View/Errors/ 配下のファイルが利用される
- /lib/Baser/View/Errors/error400.php
- /lib/Baser/View/Errors/error500.php
- /lib/Baser/View/Errors/fatal_error.php
- /lib/Baser/View/Errors/missing_class.php
2つのレイアウトを別々に調整しておいても良いのですが、まとめておくこともできます。
レイアウト側
- /lib/Baser/View/Layouts/error.php を /app/View/Layouts/error.php に複製して中身を調整する
- /lib/Baser/View/Layouts/missing_connection.php を /app/View/Layouts/missing_connection.php に複製する
- /app/View/Layouts/missing_connection.php の中身を以下にする
require __DIR__ . '/error.php';
コンテンツ側
- コア側のエラー用ビューをテーマ内に複製して中身を調整する
- /lib/Baser/View/Errors/missing_connection.php → /app/View/Errors/missing_connection.php (※ここだけ注意)
- /lib/Baser/View/Errors/error400.php → /app/webroot/theme/YOUR_THEME/Errors/error400.php
- /lib/Baser/View/Errors/error500.php → /app/webroot/theme/YOUR_THEME/Errors/error500.php
- /lib/Baser/View/Errors/fatal_error.php → /app/webroot/theme/YOUR_THEME/Errors/fatal_error.php
- /lib/Baser/View/Errors/missing_action.php → /app/webroot/theme/YOUR_THEME/Errors/missing_action.php
- /lib/Baser/View/Errors/missing_class.php → /app/webroot/theme/YOUR_THEME/Errors/missing_class.php
案内文章の例
掲載文章としてはこんな感じで載せておくと良いですね。
現在、ウェブサイトが混み合っているか、一時的な閲覧エラーが発生しております。
お時間を置いて再度アクセスするなど、今しばらくお待ちください。