Quote:
実はxHelpモジュールを使おうとしていたのですが、XOOPS2.0.xでは動作しないようなので、茨の道を覚悟しかけたところでした。
本家版2.2.x を利用するのも、相当な茨の道だと覚悟した方が良いですよ
日本語ファイルがあるくらいでは、そんなに楽になるわけではありません。
おっしゃるとおり、早くも文字コードでハマっていました。
どうしてもxHelpの中で入力文字が化けるので、「海外ものは日本語だめかな」と思って調べていたんですが、そもそもちゃんと動いていたはずの2.0.x用のDBの中の文字データが壊れていることを発見。(たまたま動いているように見えていただけでした。)
この際全てUTF-8に統一した方が良いだろうと環境を組みなおしてphp.iniとmy.cnfを修正し、さらにRHEL同梱のPHPはlatin-1しか対応していないようなのでmy.cnfにinit-connectオプションをつけて、、、ともがいて、やっと立ち上げられました。
そもそもXOOPS2.0.xでさくっとインストールしてしまうとPHPもMySQLもlatin-1モードで動作するので、危なっかしいですね。
GIJOEさんの本では、connectした後にmysql_query('SET NAMES ...')を発行するようにソースを変更していますが、my.cnfの中の設定だけで回避した方がよいように思います。
(SJISクライアントがXOOPSのDBに独自にアクセスするような場合は使えませんが)
あとは、XOOPSからのHTMLヘッダの変更と、出回っている日本語.phpファイルの文字コード変換
をやってました(笑)
これでも動かないモジュールがあったら、そのモジュールは捨てて代替品を探すことにします。
Quote:
GIJOEさんの本では、connectした後にmysql_query('SET NAMES ...')を発行するようにソースを変更していますが、my.cnfの中の設定だけで回避した方がよいように思います。
(SJISクライアントがXOOPSのDBに独自にアクセスするような場合は使えませんが)
というより、my.cnfをいじれる人の方が少ないでしょう
my.cnfがいじれる環境であっても、SET NAMESが一番無難な対応だと思っています。
Cube 2.1 もそういうコードになりますね。
Quote:
あとは、XOOPSからのHTMLヘッダの変更と、出回っている日本語.phpファイルの文字コード変換をやってました(笑)
RHELじゃあ、当然PHP4でしょうけど、PHP5ならscript_encodingをEUC-JPにして、internal_encodingをUTF-8にすれば、ソースコードのエンコーディングを変換する必要はありません。
最近のバージョンは知りませんが、1年以上前に見たxHelpは本当に穴だらけのモジュールだったので、他のモジュールにいろいろ手を入れてまで動かさなければならない程かなあ? とは思います