さて、問題のデータインポートの話です。
他のサイトで使っていた WordPress のデータをXMLファイルにエクスポートして、さあインポートしようとしたら、エラー続出で・・・結局半日を費やしてしまいました。
私が利用しているのは coreserver なのですが、これが結構クセが強くて、色々弄らないと上手く動作しないらしいです。
また、自分が使っているのはオリジナルのwordpressではなく、xoopsのモジュールとして利用できるように改良された xpress というもの。
基本的には、xoops のモジュールディレクトリに作られた xpress 用ディレクトリ下に展開された wordpress の各ファイルやフォルダが、オリジナルと同じように配置されているので、wordpress のセッティングと同様の方法で行うことができるのですが、思いもよらないところで「異なる設定」があったりして、結構躓いてしまったり・・・
ということで、今後の参考になればと思いエントリーとして書いておくことにしました。
1 インポート・プラグインを導入しようとしたら、FTP接続情報を求められてしまった
ネットで調べてみると、どうやら、apacheが作成したディレクトリに対して、wordpressがフォルダやファイル作成する権限がないために、FTP接続情報設定が求められているらしいです。
こちら http://d.hatena.ne.jp/rubellum/20110124/1295884096 を参考にして、wp-config.phpに次の記述を追加してみました。
define(‘FS_METHOD’, ‘direct’);
しかし、上手くいかない。
2 動作に必要なPHPファイルをCGIモードに変更
Coreserverの場合、PHPがセーフモードとのことで、これをCGIモードにしないと上手く動作しないらしい。
ということで、こちら http://sb.xrea.com/showthread.php?t=14149 などを参考に、.htaccessに次のような記述を行ってwp-adminディレクトリにアップロードしてみました。
<files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>
<Files upload.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files media-upload.php>
AddHandler application/x-httpd-phpcgi .php
</Files><Files plugin-install.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files plugin-editor.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files update.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files update-core.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files theme-editor.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files plugins.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files theme-install.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files themes.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files admin.php>
AddHandler application/x-httpd-phpcgi .php
</Files># protect wp-config.php
<Files wp-config.php>
Order deny,allow
deny from all
</Files>
最後の行は、wp-config.php にアクセス制限をかけてセキュリティを向上させる設定とのこと。
これで、プラグインのインストールができるようになりました。
でも、インポートしようとすると、またまたエラーが出てしまいました。
3 uploads ディレクトリの作成とパーミッション設定
ネットを見ると、wp-content 下に uploads というフォルダ(ディレクトリ)を作成、書き込み権限を与えて、改めてインポートしたら成功するという書き込みがありました。
http://d.hatena.ne.jp/mxz/20100918/1284796185
・・・が、xoops版wordpressである xpress の場合はそこにフォルダを作成してもエラーが出るんです。
何回やっても成功しないので、ふと思いついて、xoops のアップロードディレクトリ配下にxpress用のアップロードディレクトリを作成してみました。
サイトルート/uploads/wp-content/uploads/
そして、パーミッションを777に変更すると、アップロード可能な画面になりました。
さあ、もう大丈夫と思ってインポート用のファイルを読み込んでみると、次の画面のようにまたエラー。困りました。
ちなみに、FTPで確認すると、ファイルそのものはアップロードされているようです。
4 .htaccess に記述を追加
.htaccess に次の記述を加えたところ
<Files admin.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
次のようなエラー表示に変わりました。
Import WordPress
*** glibc detected *** malloc(): memory corruption: 0x0882fb18 ***
5 メモリーの確保不足?
とりあえず、ネットで調べるとメモリーの確保不足というのがあったので、php.iniに次の記述をして、wp-admin に配置してみた。
post_max_size = 50M
max_execution_time = 300
max_input_time = 600
memory_limit = 100M
でも、上手くいかない・・・
6 インポート用プラグインのバージョンを下げる
で、ネットを色々と調べてみると、結局、インポート用のプラグインのバージョンを下げると上手くいくという情報があり、試してみました。
http://downloads.wordpress.org/plugin/wordpress-importer.0.2.zip
こちらから、ダウンロードして、最新の0.5から0.2に変更してみたところ、なんとかインポートが出来ました。あ~しんど。