「Cms/mediawiki/pukiwikiからmediawikiへ移行」の版間の差分
行91: | 行91: | ||
htmlの効果を無効に | htmlの効果を無効に | ||
+を#に | +を#に | ||
+ | |||
+ | ==不要なページを移行後削除する== | ||
+ | +.htaccess | ||
+ | +Config/plugin/tracker | ||
+ | +Index.html | ||
+ | +PukiWiki/1.4 | ||
+ | +PukiWiki/1.4/Manual | ||
+ | +PukiWiki/1.4/Manual/Plugin/A-D | ||
+ | +PukiWiki/1.4/Manual/Plugin/E-G | ||
+ | +PukiWiki/1.4/Manual/Plugin/H-K | ||
+ | +PukiWiki/1.4/Manual/Plugin/L-N | ||
+ | +PukiWiki/1.4/Manual/Plugin/O-R | ||
+ | +PukiWiki/1.4/Manual/Plugin/S-U | ||
+ | +PukiWiki/1.4/Manual/Plugin/V-Z | ||
+ | +RenameLog | ||
==各種バージョン== | ==各種バージョン== |
2015年5月21日 (木) 04:02時点における版
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の効果を無効に +を#に
不要なページを移行後削除する
+.htaccess +Config/plugin/tracker +Index.html +PukiWiki/1.4 +PukiWiki/1.4/Manual +PukiWiki/1.4/Manual/Plugin/A-D +PukiWiki/1.4/Manual/Plugin/E-G +PukiWiki/1.4/Manual/Plugin/H-K +PukiWiki/1.4/Manual/Plugin/L-N +PukiWiki/1.4/Manual/Plugin/O-R +PukiWiki/1.4/Manual/Plugin/S-U +PukiWiki/1.4/Manual/Plugin/V-Z +RenameLog
各種バージョン
pukiwiki 1.4.6 mediawiki 1.24.2 php 5.6.0