現在位置: Top / EUC-JPなMySQLにOpenPNE

EUC-JPなMySQLにOpenPNE

land.toにOpenPNEを設置してみました。
このland.toはMySQLがEUC-JPしか受け付けないようで、
初期状態ではOpenPNEが文字化けしていました。

OpenPNEの解凍と変換

  1. 圧縮ファイルを解凍後、OpenPNE内のpublic_htmlをsnsとリネームする。
  2. sns内のconfig.inc.phpの設定をし、land.toのpublic_htmlへ移動。
  3. OpenPNE内の他のフォルダ内のファイルをすべてEUC-JPにコンバート。
  4. OpenPNE/webapp内のUTF-8という文字列をすべてEUC-JPに置換。
    ※コンバートや置換は、自動化させないと途方もない作業になります。
    ※webapp以外のUTF-8もEUC-JPへ置換してしまうとメールが文字化けしてしまいました。
  5. OpenPNE/config.php内のUTF-8もEUC-JPへ置換。
  6. OpenPNEはpublic_htmlと並列にルートへアップロード。

コンバートと置換を一括処理

コンバートと置換の一括処理の一例

#!/bin/bash

CONVERT_HOME="/tmp/OpenPNE"

for f in `find $CONVERT_HOME`
do
    if [ -f "$f" ] ; then
        nkf -d --euc $f > "$f"_tmp
        mv "$f"_tmp "$f"
    fi
done

for f in `find $CONVERT_HOME/webapp`
do
    if [ -f "$f" ] ; then
        sed -e 's/UTF-8/EUC-JP/g' "$f" > "$f"_tmp
        mv "$f"_tmp "$f"
    fi
done

exit 0

データベースの設定

  1. データベースの設定は、phpMyAdminでSQLを実行する。
  2. 文字コードはEUC-JP。
    あとは説明書通りの設定で。

ブログのタイトル一覧が文字化け

RSSの取得で文字化けを修正
OpenPNE/lib/PNE/RSS.php

    function convert_encoding($string)
    {
//        if (!$this->charset) {
//            return $string;
//        }
//        return mb_convert_encoding($string, $this->charset, MAGPIE_OUTPUT_ENCODING);
        return mb_convert_encoding($string, "EUC-JP", "auto");
    }

RSSを取得したとき、とにかくEUC-JPに変換してしまおう!!

日付が代入されない

「%m月%d日」と数値が代入されません。
OpenPNE/webapp/lib/smarty_plugins/modifier.date_format.php

return preg_replace_callback('/\%[a-z\%]/iu',

という部分の「iu」→「i」とします。

uというのは、UTF-8を前提としているという意味なので、この1文字を削除するだけでOK。

cronを遠隔操作(おまけ)

  1. /public/sns/binをいうディレクトリを作成し、
    /OpenPNE/binのファイルをコピー。
  2. *.php内の
    require_once './config.inc.php';
    という行を
    define('OPENPNE_DIR', realpath('/home/httpd/xxx/openpne'));
    require_once OPENPNE_DIR . '/config.php';
    と置き換える。
  3. これを自宅のローカルサーバーでcronする。
    01 6 * * * wget -q -O - http://xxx.land.to/sns/bin/tool_send_daily_news.php
    02 6 * * * wget -q -O - http://xxx.land.to/sns/bin/tool_send_birthday_mail.php
    03 6 * * * wget -q -O - http://xxx.land.to/sns/bin/tool_schedule_mail.php
    */20 * * * * wget -q -O - http://xxx.land.to/sns/bin/tool_rss_cache.php