/** * Page を初期化する. * LC_Page_Adminクラス内でエラーページを表示しようとした際に無限ループに陥るのを防ぐため, * ここでは, parent::init() を行わない.(フロントのエラー画面出力と同様の仕様) * * @return void */ public function init() { SC_Helper_HandleError_Ex::$under_error_handling = true; $this->template = LOGIN_FRAME; $this->tpl_mainpage = 'login_error.tpl'; $this->tpl_title = 'ログインエラー'; // ディスプレイクラス生成 $this->objDisplay = new SC_Display_Ex(); // transformでフックしている場合に, 再度エラーが発生するため, コールバックを無効化. $objHelperPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg); $objHelperPlugin->arrRegistedPluginActions = array(); // キャッシュから店舗情報取得(DBへの接続は行わない) $this->arrSiteInfo = SC_Helper_DB_Ex::sfGetBasisDataCache(false); }
* * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ if (!defined('CLASS_REALDIR')) { /** クラスパス */ define('CLASS_REALDIR', DATA_REALDIR . "class/"); } if (!defined('CLASS_EX_REALDIR')) { /** クラスパス */ define('CLASS_EX_REALDIR', DATA_REALDIR . "class_extends/"); } if (!defined('CACHE_REALDIR')) { /** キャッシュ生成ディレクトリ */ define('CACHE_REALDIR', DATA_REALDIR . "cache/"); } // クラスのオートローディングに対応するフックを入れるために、ここに入れる必要あり require_once CLASS_EX_REALDIR . 'helper_extends/SC_Helper_Plugin_Ex.php'; // クラスのオートローディングを定義する require_once CLASS_EX_REALDIR . '/SC_ClassAutoloader_Ex.php'; spl_autoload_register(array('SC_ClassAutoloader_Ex', 'autoload')); SC_Helper_HandleError_Ex::load(); // アプリケーション初期化処理 $objInit = new SC_Initial_Ex(); $objInit->init();
/** * エラー捕捉時のエラーハンドラ関数 (for PHP >= 5.2.0) * * この関数は, register_shutdown_function() 関数に登録するための関数である。 * PHP 5.1 対応処理との互換運用ため E_USER_ERROR は handle_warning で捕捉する。 * * @return void */ public static function handle_error() { // 最後のエラーを確実に捉えるため、先頭で呼び出す。 $arrError = error_get_last(); $is_error = false; if (isset($arrError)) { switch ($arrError['type']) { case E_ERROR: case E_PARSE: case E_CORE_ERROR: case E_COMPILE_ERROR: $is_error = true; break; default: break; } } if (!$is_error) { return; } $error_type_name = GC_Utils_Ex::getErrorTypeName($arrError['type']); $errstr = "Fatal error({$error_type_name}): {$arrError[message]} on [{$arrError[file]}({$arrError[line]})]"; GC_Utils_Ex::gfPrintLog($errstr, ERROR_LOG_REALFILE, true); // エラー画面を表示する SC_Helper_HandleError_Ex::displaySystemError($errstr); }
/** * エラー画面を表示する * * @param string|null $errstr エラーメッセージ * @return void */ public static function displaySystemError($errstr = null) { SC_Helper_HandleError_Ex::$under_error_handling = true; ob_clean(); // 絵文字変換・除去フィルターが有効か評価する。 $loaded_ob_emoji = false; $arrObs = ob_get_status(true); foreach ($arrObs as $arrOb) { if ($arrOb['name'] === 'SC_MobileEmoji::handler') { $loaded_ob_emoji = true; break; } } // 絵文字変換・除去フィルターが無効で、利用できる場合、有効にする。 if (!$loaded_ob_emoji && class_exists('SC_MobileEmoji')) { ob_start(array('SC_MobileEmoji', 'handler')); } require_once CLASS_EX_REALDIR . 'page_extends/error/LC_Page_Error_SystemError_Ex.php'; $objPage = new LC_Page_Error_SystemError_Ex(); $objPage->init(); if (isset($errstr)) { $objPage->addDebugMsg($errstr); } $objPage->process(); }