(古い記事) « MySQLの使い方 | サイトTOPMySQL5の既存DB文字コード変更(latin1からujis) » (新しい記事)

■ Linuxサーバー

XOOPS Cube と PHP5, MySQL5 の相性

OSを入れ替えた際、PHPとMySQLのバージョンアップがくっついてきた。 PHP4とPostgreSQLで動作する変則的になXOOPSで構築していたものが、新しいこの環境だと動かない。

PHP5では「$HTTP_SERVER_VARS」変数が使えない

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互換モード

ネットで情報収集していると、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を動かすのは諦めた。

XOOPS動作に必要なMySQL5の文字コード指定

そこで、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の作り直しから。

PHP5とMySQL5で動作するXOOPSのバージョン

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

コメント

コメントする




保存しますか?


        XOOPS Cube と PHP5, MySQL5 の相性のTOPへ

(古い記事) « MySQLの使い方 | サイトTOP | MySQL5の既存DB文字コード変更(latin1からujis) » (新しい記事)