スタッフブログ
こんにちわ、なおとです。
今日の話題は、よく使う bulletin(ニュース)モジュールの問題点を修正したことについてです。
問題の状況
- Windows環境で作成したDBのデータをUNIX環境に持って行った場合
- windowsでXOOPSを運用していると、この現象は顕在化しない
- ルート側のdirnameに大文字を混在させてインストール/利用している
- テーブル名は小文字で作られる
- しかしテーブル名にアクセスするとき、〜$xoopsDB->prefix($mydirname.'_topics')〜というコードでテーブル名をつくってクエリを生成している
- $mydirnameには大文字が含まれていて、内部的にはそのテーブル名は存在しない、というエラーが起こる
影響を受けるバージョン(調べた部分のみ)
- bulletinHD 2.16(PEAK配布バージョン)
- bulletinHD(HD1.0.2 以前)
- bulletinを元にした派生版
解決方法
prefix()を呼んでいる箇所を全てチェックし、必要に応じてstrtolower()を挟む
他の解決方法も検討しましたが、今回は上記対応を行いました。
修正用の差分ファイル
bulletin テーブル名不正規問題修正パッチ (ダウンロード)
2008.12.26 13:40 追記:この現象は、 Windows環境で作成したDBのデータをUNIX環境に持って行った場合に限定されます。
通常の環境の場合、上記の差分ファイルパッチを当てると、逆に動作しなくなります。
ただ、WARPなどの環境でデータを作成してから、UNIX環境にデータを移行して運用なんてケースも考えられるので、その場合は上記パッチを適用して頂いた方が良いと思われます。