サーバの引っ越しをしてMySQLのメジャーバージョンが変わったことは
昨日書きましたが、ということは…
今まで動かせなかったXOOPS Cubeが動くのかな?
ということで設置しただけで放っておいたサイトを確認してみると
なんと普通に動きそうじゃありませんか!!^^/
以前はXOOPSの設定などをするとデータベースの中身が
壊れてしまいましたが特に問題が発生しないようです。
これはちょっと嬉しいカモ^^
念のためPleskからphpMyAdminを使ってデータベースを見てみると
あらっ 2バイトコードが化けているT-T
テーブルのキャラクタコードが「latin1_swedish_ci」となっている。。。
前はEUCだったような気が。。。引っ越し時のデータ移動で変わってしまったかな?
とりあえずphpMyAdminからデータ変更しなければ問題なさそうなので
そっとしておいてもいいかな? と思いましたが気持ち悪さと
元々インストールしただけの状態だったのでもう一回入れ直してみた。
すると。。。今度はブラウザ表示もphpMyAdminも文字化けが。。。T-T
これはMySQL最大のウィークポイントのあの文字コード勝手変換機能のせいだ!
と思ったのでそれを回避すべくソースコードを弄ってみる。
変更したのは以下の通り
(XOOPS Cubeインストール先)/class/database/mysqldatabase.php (80行目付近)
function connect($selectdb = true)
{
if (XOOPS_DB_PCONNECT == 1) {
$this->conn = @mysql_pconnect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
} else {
$this->conn = @mysql_connect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
}
mysql_query("SET NAMES ujis”, $this->conn);
if (!$this->conn) {
$this->logger->addQuery('’, $this->error(), $this->errno());
return false;
}
if($selectdb != false){
if (!mysql_select_db(XOOPS_DB_NAME)) {
$this->logger->addQuery('’, $this->error(), $this->errno());
return false;
}
}
return true;
}
データベースアクセスの際に使用する文字コードを明示してあげることで
間違った変換をすることがなくなるはずです。
上の変更をした後、再度インストールして動作を見てみると…
バッチリOKでした!
もし同様の問題でお悩みの方がいらっしゃいましたら是非試してみてください!