Cms/mediawiki/pukiwikiからmediawikiへ移行
提供: 初心者エンジニアの簡易メモ
2015年5月21日 (木) 02:54時点における36.55.238.17 (トーク)による版
sugoiyo72氏が作ったp2m_wiki_converterツールを使ってpukiwikiからmediawikiへ移行
一切説明がなかったので中を解析して以下にやり方を記述する
目次
なぜ移行するか
pukiwikiがphp5.3までしか対応されておらず、 php5.4以上にするとうまく表示されません。
更新も止まってるようなので移行します。
移行ツール作者説明ページ
移行ツールをDL
htmlアクセス(document_root)領域にDL
git clone https://github.com/sugoiyo72/p2m_wiki_converter
mediawikiと別のドメインの場所でもok
mediawikiをDL
移行ツールの公式にはバージョン指定があったが、 一応今現在(2015/5/19)の最新で移行できた。
wget http://releases.wikimedia.org/mediawiki/1.24/mediawiki-1.24.2.tar.gz tar zxvf mediawiki-1.24.2
pukiwikiのlib/func.phpを指定
- config.phpを修正
-require "lib/func.php"; +require "/var/www/html/samplewiki1/lib/func.php";
pukiwikiのdataを指定
- config.phpを修正
-define ("DATA_DIR", "mediawikiconverter/data"); +define ("DATA_DIR", "/var/www/html/samplewiki1");
ログインセッション名修正
DB名と接頭辞の設定によって変化する。
よくわからなければ、一度mediawikiにログインしてブラウザのcookie一覧に それっぽい名前があるので確認してもらえれば良い。
- actions/uploadToMediaWiki.php
-$setcookieheader = "Set\-Cookie: wikidbUserName="; +$setcookieheader = "Set\-Cookie: wiki_wiki__session=";
移行実行
http://localhost/p2m_wiki_converter/mediawikiconverter.php
出てくるボタンをポチっていく。
hex2bin()のエラー
hex2bin()のエラーが出た時はpukiwikiのlib/func.phpのhex2bin()関数を削除(php5.4以上だと出る)
PHP Fatal error: Cannot redeclare hex2bin()
hex2bin()のエラー
hex2bin()のエラーが出た時はpukiwikiのlib/func.phpのhex2bin()関数を削除(php5.4以上だと出る)
PHP Fatal error: Cannot redeclare hex2bin()
pukiwiki整形をmediawiki整形に置換
- actions/uploadToMediaWiki.phpの以下場所に置換ロジックを追加
function uploadWikiPage ($wiki) { $params = $this->getParamsForPageUpload($wiki); // ここから追加 $tmp = $params['postfields']['wpTextbox1']; $lines = preg_split("/\r\n|\r|\n/", $tmp); $tmps = array(); foreach ($lines as $line) { $line = preg_replace("!\t!", " ", $line); $line = preg_replace("!^\+!", "#", $line); $line = preg_replace("!^\*\*\*\*!", "====", $line); $line = preg_replace("!^\*\*\*!", "===", $line); $line = preg_replace("!^\*\*!", "==", $line); $line = preg_replace("!^\*!", "=", $line); $line = preg_replace("!^\-!", "*", $line); $line = preg_replace("!<([\w]+)!", "<<nowiki />$1", $line); $line = str_replace("<!--", "<<nowiki />!--", $line); $line = str_replace("{{", "{{<nowiki />", $line); $line = preg_replace("!( \[#[\w]{8}\])!", "", $line); if (preg_match("!^([\=]+)!", $line, $matches2)) { $line .= $matches2[1]; } $tmps[] = $line; } $tmp = implode("\n", $tmps)."\n"; $params['postfields']['wpTextbox1'] = $tmp; // ここまで追加 $upload = $this->sendWikiPageData($params, $wiki, "txt"); }
やってることは以下のようなこと
**を==に置換 -を*に htmlの効果を無効に +を#に
各種バージョン
pukiwiki 1.4.6 mediawiki 1.24.2 php 5.6.0