インソースマーケティングデザイン
2012.04.23 システム
XOOPSのサーバー移行のポイント
最近古いサーバーから、新しいサーバーにXOOPSを引越しする案件がありました。
旧サーバーではEUC-JPでphpやmysqlがセットアップされていましたが、新サーバーでは今後の事も考えUTF-8で各サービスを動かすようにセットアップしました。XOOPS自体はEUC-JPで安定稼動しているので、UTF8に変換等の対処は行わず、小手先だけの対応で移行が可能でしたので、困っている人は参考にしてください。
<ポイント① MySQLの復元>
1.EUC-JPのDBはEUCで取得する。
mysqldump -u admin -pPASSWORD DBNAME --default-character-set=ujis --opt > /home/marineroad/DUMPNAME
2.移行先となるDBはEUC-JP(ujis)で作成する。
create database DBNAME default character set ujis;
3.後はそのまま復元する。
mysql -u admin -pPASSWORD DBNAME < /home/marineroad/DUMPNAME
※もしうっかりデフォルトの文字コードでダンプを取ってしまっても「SET NAMES utf8」となっている行を「SET NAMES ujis」にすればOKです。
<ポイント② .htaccessでの設定変更>
1.下記の設定をドキュメントルートの.htaccessに追加する。
AddDefaultCharset EUC-JP AddType "text/html; charset=EUC-JP" .htmlphp_flag output_buffering Off php_value output_handler none php_value default_charset EUC-JP php_value mbstring.language japanese php_flag mbstring.encoding_translation On php_value mbstring.http_input auto php_value mbstring.http_output EUC-JP php_value mbstring.internal_encoding EUC-JP php_value mbstring.substitute_character none
以上で新サーバーの設定はそのままに既存のXOOPSを引越し出来たはずです。上記を実施しても文字化けが出る人はXOOPSとブラウザのキャッシュをクリアして再度アクセスしてみましょう。(私自身細かい検証はこれからですので、参考にした人は各自動作検証を良く行ってください。)
【追記】上記の対処でもどうしても動かない場合はこちらのリンクを参考にして、mysqldatabase.phpの236行目にmysql_query(“SET CHARACTER SET ujis”, $this->conn);を追記すると良いみたいです。