XPressME Integration Kit

フォーラム

Re: 1.xから2.xへのアップデートについて

#2794
toemon
キーマスター

FutureSpyさん、ご協力、ありがとうございました。

FutureSpyさんに準備していただいた、テスト用サイトで不具合の詳細を知ることができました。

今回の不具合の主原因は、mainfile.phpの本体をtrust_path側におき、XOOPS_ROOT_PATH/mainfile.phpからrequire_onceする構造になっていた為に発生したものです。

ローカル環境でも同様の構成にした場合には、不具合を再現することができました。

XPressME ver2.XではXOOPSとの結合を緩やかなものにするために、必要以外はXOOPSシステムをロードしない形になっています。

それらの理由からXPressMEはclass/config_from_xoops.class.phpにてXOOPSのmainfile.phpからDB接続に必要な情報、URL、ルートパスなどをパターンマッチングで取得しています。

(mainfile.phpをincludeするとXOOPSをロードしてしまう為 <- XPressME Ver1.Xでは、このせいでWordPress側のコードを変更していた。)

ImpressCMSでもDB接続に必要な情報の定義ファイルがTrust_path側にあり、これに対しては読取り処理をすでに実装済みですので、

今回のケースのような場合でも、trust_path側を探しに行くこと自体はXPressMEのコード変更によって可能です。

但し、FutureSpyさんの書かれた定義ファイルでは XOOPS_URL 定義に条件分岐がありますのでパターンマッチングは使えません。

これらの要因を踏まえ、

  1. trust_path側の定義ファイル名はmainfile.phpであること。
  2. trust_path側の定義ファイルmainfile.phpにはdefine()部分だけを置くこと(パターンマッチングではなくinclude_onceすることにより、条件分岐を可能にする)
  3. XOOPS_ROOT_PATH/mainfile.php側では、require_once(trust_path側の定義ファイルmainfile.php) とXOOPSロードの部分を置くこと。

の条件で、class/config_from_xoops.class.phpの修正を行ってみました。

FutureSpyさん準備いただいた、テスト用サイトは以下の変更を行いました。

  • /public_html/modules/blog_new/admin/index.phpの修正 <-これはまた別の問題
  • /public_html/modules/blog_new/config_from_xoops.class.phpの修正
  • /public_html/modules/blog_new/templates パーミッションの変更
  • /public_html/modules/blog_new/wp-contents パーミッションの変更
  • /public_html/mainfile.php の修正
  • /xoops_trust_path/mainfile.php の修正
  • /public_html/.htaccess RewriteRuleにblog_newを追加

以上、確認いただければ幸いです。