データベース接続エラーが発生
症状
モジュールトップにアクセスしたとき
Error establishing a database connection
が表示される
WordPress管理にアクセスしたとき
が表示される
原因
この現象はXPressMEがXOOPSよりデータベース接続情報を取得できない場合に発生します。
XPressMEがXOOPSよりデータベース接続情報を正しく取得しているかどうかは、システム情報の「XPressMEがXOOPSより取得した設定値」にて確認できます。
正常時
取得できていない場合 NG箇所が赤字表示されます。
正常に取得できない場合、XOOPSのmainfile.phpの構成が標準状態と異なっている場合が考えられます。
XPressMEはXOOPSシステムをロードすることなくデータベースの接続情報を取得するために、XOOPSのmainfile.phpを読み取り、接続情報を取得している為、下記条件の場合正常に読み込めない場合があります。
- define文を条件分岐している。
- define文がmainfile.phpにはなくmainfile.phpからinclude(require)されたファイルにある。(ImpressCMSの場合を省く)
対策
標準以外のmainfile.phpを使用する場合
xoops_trust_path側にdefine処理を行うmainfile.phpというファイルを置き、XOOPS_ROOT_PATH側のmainfile.php側からinclude(require)するようにしてください。
XOOPS_ROOT_PATH側のmainfile.php例
<?php
if ( !defined("XOOPS_MAINFILE_INCLUDED") ) {
define("XOOPS_MAINFILE_INCLUDED",1);
require_once('C:\xampp\cube_trust/mainfile.php');
// You can select two special module process excuting mode with defining following constants
//
// define('_LEGACY_PREVENT_LOAD_CORE_', 1);
// Module process will not load any XOOPS Cube classes.
// You cannot use any XOOPS Cube functions and classes.
// (eg. It'll be used for reffering only MySQL Database definition.)
//
// define('_LEGACY_PREVENT_EXEC_COMMON_', 1);
// Module process will load XOOPS Cube Root class and initialize Controller class.
// You can use some XOOPS Cube functions in this mode.
// You can use more XOOPS Cube functions (eg. xoops_gethandler), if you write
// $root=&XCube_Root::getSingleton();
// $root->mController->executeCommonSubset();
// after including mainfile.php.
// It is synonym of $xoopsOption['nocommon']=1;
// But $xoopsOption['nocommon'] is deprecated.
//
if (!defined('_LEGACY_PREVENT_LOAD_CORE_') && XOOPS_ROOT_PATH != '') {
include_once XOOPS_ROOT_PATH.'/include/cubecore_init.php';
if (!isset($xoopsOption['nocommon']) && !defined('_LEGACY_PREVENT_EXEC_COMMON_')) {
include XOOPS_ROOT_PATH.'/include/common.php';
}
}
}
?>
自動取得を無効にする場合
XPressMEはxp-config.phpが存在する場合、XOOPS mainfile.phpの読み取りを行わず、xp-config.phpの設定に従ってデータベース接続を行います。
xp-config.phpは、モジュールトップにあるxp-config-sample.phpを参考にdefine文にmainfile.phpに設定した値と同じ値をします。


