// 最小限の設定が行われていない場合,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;
}
}
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');
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;
}
}
/**
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;
}
}
/**
+ * エラー画面を表示
+ *
+ * @return なし
+ */
+ function showError()
+ {
+ $this->setResponse(500);
+ echo '<h2>Internal Server Error</h2>';
+ }
+ /**
* ウィジェットがセットされているページサブIDを取得
*
* @param string $pageId ページID