OSDN Git Service

運用時のDB接続エラー処理を追加。
authornaoki hirata <naoki@magic3.org>
Thu, 26 Jun 2014 02:49:14 +0000 (11:49 +0900)
committernaoki hirata <naoki@magic3.org>
Thu, 26 Jun 2014 02:49:14 +0000 (11:49 +0900)
include/container/baseFrameContainer.php
include/log/.gitkeep [new file with mode: 0644]
include/manager/pageManager.php

index 760d9c2..6d1424d 100644 (file)
@@ -51,14 +51,24 @@ class BaseFrameContainer extends Core
                // 最小限の設定が行われていない場合,DBに接続できない場合は、インストール画面へ
                if (!defined('M3_STATE_IN_INSTALL')){
                        if (($this->gEnv->canUseDb() && $this->gSystem->canInitSystem()) ||             // システム初期化モードのとき
-                               !$this->gConfig->isConfigured() ||                                                                      // 設定ファイルに設定がないとき
-                               !$this->gEnv->canUseDb()){                                                                                      // DBがまだ作成されていないとき
+                               !$this->gConfig->isConfigured()){                                                                       // 設定ファイルに設定がないとき(初回インストール)
                                
                                // インストーラファイルがない場合は回復
                                $this->gInstance->getFileManager()->recoverInstaller();
 
                                $this->gPage->redirectToInstall();
                                return;
+                       } else if ($this->gConfig->isConfigured() && !$this->gEnv->canUseDb()){         // DB接続失敗のとき
+                               if ($this->gEnv->isAdminDirAccess()){           // 管理画面の場合のみインストーラ起動
+                                       // インストーラファイルがない場合は回復
+                                       $this->gInstance->getFileManager()->recoverInstaller();
+
+                                       $this->gPage->redirectToInstall();
+                               } else {
+                                       // サーバ内部エラーメッセージ表示
+                                       $this->gPage->showError();
+                               }
+                               return;
                        }
                }
                
diff --git a/include/log/.gitkeep b/include/log/.gitkeep
new file mode 100644 (file)
index 0000000..e69de29
index a6a4cd5..7b3b28e 100644 (file)
@@ -4571,10 +4571,6 @@ class PageManager extends Core
        function setResponse($responseCode)
        {
                switch ($responseCode){
-                       case 503:                       // サイト非公開(システムメンテナンス)
-                               header('HTTP/1.1 503 Service Temporarily Unavailable');
-                               header('Status: 503 Service Temporarily Unavailable');
-                               break;
                        case 403:                       // アクセス禁止のとき
                                header('HTTP/1.1 403 Forbidden');
                                header('Status: 403 Forbidden');
@@ -4583,6 +4579,14 @@ class PageManager extends Core
                                header("HTTP/1.1 404 Not Found");
                                header("Status: 404 Not Found");
                                break;
+                       case 500:                       // サーバ内部エラー
+                               header('HTTP/1.1 500 Internal Server Error');
+                               header('Status: 500 Internal Server Error');
+                               break;
+                       case 503:                       // サイト非公開(システムメンテナンス)
+                               header('HTTP/1.1 503 Service Temporarily Unavailable');
+                               header('Status: 503 Service Temporarily Unavailable');
+                               break;
                }
        }
        /**
@@ -4699,6 +4703,14 @@ class PageManager extends Core
                                case 303:
                                        header('HTTP/1.1 303 See Other');
                                        break;
+                               case 500:                       // サーバ内部エラー
+                                       header('HTTP/1.1 500 Internal Server Error');
+                                       header('Status: 500 Internal Server Error');
+                                       break;
+                               case 503:                       // サイト非公開(システムメンテナンス)
+                                       header('HTTP/1.1 503 Service Temporarily Unavailable');
+                                       header('Status: 503 Service Temporarily Unavailable');
+                                       break;
                                default:
                                        header('HTTP/1.1 ' . (string)$responseCode);
                                        break;
@@ -4801,6 +4813,16 @@ class PageManager extends Core
                }
        }
        /**
+        * エラー画面を表示
+        *
+        * @return                                              なし
+        */
+       function showError()
+       {
+               $this->setResponse(500);
+               echo '<h2>Internal Server Error</h2>';
+       }
+       /**
         * ウィジェットがセットされているページサブIDを取得
         *
         * @param string $pageId                ページID