XOOPSは元々EUC-JPのみの対応らしく、文字コードがUTF-8のサーバでは少し手を加えなければいけないようです。私達のサーバはデフォルト文字コードがUTF-8なので、手を加えてインストールしてみました。文字コードEUC→UTF8対応を扱った記事やブログは多いのですが、DB(MySQL)のUTF8対応に関する記載が中々文字化けが解消できなかったので、ここに手順を記載します。
[ ヒントを頂いたサイト ]
こちらのサイトからヒントを頂きました。
[ Xoopsインストール手順 ]
1.Xoopsをダウンロードし、解凍します。(今回はXoopsCube 2.1.7をインストールしました)
>unzip Package_Legacy_2_1_7.zip
2.解凍後、Package_Legacy/html配下でEUC-JPのファイルをUTF8に変更します。シェル(euc2utf8.sh)を作成しましたので、↓を参照してください。このシェルを実行します。
#####################################
# EUC Files -> UTF8 Files transport. euc2utf8.sh
#####################################
DIR=usr/local/src/Package_Legacy/html ←ここはhtmlフォルダのパス
ARR[0]=$DIR/*
ARR[1]=$DIR/*/*
ARR[2]=$DIR/*/*/*
ARR[3]=$DIR/*/*/*/*
ARR[4]=$DIR/*/*/*/*/*
ARR[5]=$DIR/*/*/*/*/*/*
ARR[6]=$DIR/*/*/*/*/*/*/*
for (( i = 0; i < ${#ARR[*]}; i++ ))
{
#echo “${ARR[i]}”
for j in ${ARR[i]}
do
NKF=$(nkf -g $j)
if [ $NKF = “EUC-JP” ]; then
echo “CONVERT : $j $NKF” >> result.txt
/usr/bin/nkf -w $j > $j.temp
mv -f $j.temp $j
fi
done
}
3.”class/database/mysqldatabase.php”の250行目辺りに追記します。
* perform a query on the database
*
* @param string $sql a valid MySQL query
* @param int $limit number of records to return
* @param int $start offset of first record to return
* @return resource query result or FALSE if successful
* or TRUE if successful and no result
*/
function &queryF($sql, $limit=0, $start=0)
{
if ( !empty($limit) ) {
if (empty($start)) {
$sql .= ‘ LIMIT ‘ . intval($limit);
}
else
{
$sql = $sql. ‘ LIMIT ‘.(int)$start.’, ‘.(int)$limit;
}
}
mysql_query(“SET CHARACTER SET utf8”, $this->conn); // ここを追加
$result = mysql_query($sql, $this->conn);
if ( $result ) {
$this->logger->addQuery($sql);
4.後はXoopsのインストールウィザードに従っていきます。
>http://[Xoopsインストール先URL]/installにアクセスすると、インストールがウィザード形式で行われます。
※UPLoad等のフォルダ設定は書込み可能にしておきましょう。
以上で、インストール完了です。