(古い記事) « MySQLの使い方 | サイトTOP | MySQL5の既存DB文字コード変更(latin1からujis) » (新しい記事)
OSを入れ替えた際、PHPとMySQLのバージョンアップがくっついてきた。 PHP4とPostgreSQLで動作する変則的になXOOPSで構築していたものが、新しいこの環境だと動かない。
PHP5では「$HTTP_SERVER_VARS」変数が使えなくなったらしい。次のサイト PHPスクリプト講座:サーバ変数についてに、
PHP5以降では「register_long_arrays」という設定値がOFFであれば$HTTP_SERVER_VARSは使えません。
とある。ただ、これはphp.iniファイルの設定で使えるようにできるとの事。php.iniの次の設定をONにすればよい。
register_long_arrays = Off → On
しかし、これだけではまだPHPのエラーが出てダメであった。
ネットで情報収集していると、PHP5をPHP4として動作させる設定があるみたい。
PHP 5には、PHP 4(Zend Engine 1)との互換性を保つための設定ディレクティブが用意されている。下記のディレクティブをphp.iniに挿入すると、PHP 5はZend Engine 1(PHP 4)互換モードで動作する。
zend.ze1_compatibility_mode On
この設定で、XOOPSが動くようになるか?と思ったが、結局これも動かなかった。 最終的にはPHP5で古いXOOPSを動かすのは諦めた。
そこで、PHP5とMySQL5で動作するXOOPS Cubeに入れ替える事にした。
動作環境 | XoopsCubeのサイトには、「PHP5以上であっても問題なく動作する。」と書かれているので、最新版をDLする。この時の最新版バージョンは 「XOOPS Cube Legacy 2.1.5」
MySQLに関しては特に何も気にせず適当にDBを作成した。適当というのは、文字コードの指定など特にせず、デフォルトで作った。ということ。
XOOPS Cubeの初期設定も問題なく完了。いざ出来上がったサイトにアクセスしてみると、メニューなどの文字が「??????」と表示される。テンプレートに書かれている文字は問題なく表示されている。どうもDBから取得している文字の文字コードが怪しい。
ネット上には同じような問題が起こっている方がいらっしゃって、Xoops Cube文字化け解消!には
原因は単純でMySQLのCHARACTER SETでした。だってー、CentOSに入ってるMySQLのdefault CHARACTER SETってlatin1なんだもん、、、cp1252 West European [ latin1_swedish_ci ]ってなんだよー。
とのこと。デフォルトの文字コードはujis(EUC-JP)でもなく、UTF-8でもないんだって。でもってなんでlatin1なんだ!?と思ってしまった。 DBを作成する時に、次のように文字コードをujis(EUC-JP)で指定してあげる必要がある。とのこと。
create database db_name CHARACTER SET ujis;
そこで、DBの作り直しから。
DBの環境は揃った。同じようにXOOPS Cubeの初期セットアップを行い、問題なく完了。 とりあえず文字化けは直ったが、管理機能を使用しようとしても画面に管理項目が表示されない。(メニュー一覧は表示されているのだが)
最新のソースがいけないのか、XOOPS Cube Legacyにある旧安定番 XOOPS 2.0.16a JP をインストール。(文字コードはEUC) このバージョンだと問題なく動いた。
最終的にPHPとMySQL、XOOPS Cubeの組み合わせは次のようなバージョンの組み合わせとなった。
CentOS 5.1
PHP 5.1.6
MySQL 5.0.45 (ujisの設定で使用)
Xoops XOOPS 2.0.16a JP
2008/09/05 16:28
このエントリーのトラックバックURL:
http://www.wingnotes.net/mt/mt-tb.cgi/154
このリストは、次のエントリーを参照しています: XOOPS Cube と PHP5, MySQL5 の相性:
» MySQL5の既存DB文字コード変更(latin1からujis) from Wingnotes
XOOPS Cube と MySQL 前回の日記XOOPS Cube と PHP5, MySQL5 の相性でも書いたが、新しいバージョンのOS、PHP、M... [続きを読む]
トラックバック時刻: 2008年09月29日 19:15
(古い記事) « MySQLの使い方 | サイトTOP | MySQL5の既存DB文字コード変更(latin1からujis) » (新しい記事)