「Cms/mediawiki/pukiwikiからmediawikiへ移行」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→pukiwiki整形をmediawiki整形に置換) |
(→なぜ移行するか) |
||
(同じ利用者による、間の2版が非表示) | |||
行1: | 行1: | ||
sugoiyo72氏が作ったp2m_wiki_converterツールを使ってpukiwikiからmediawikiへ移行 | sugoiyo72氏が作ったp2m_wiki_converterツールを使ってpukiwikiからmediawikiへ移行 | ||
− | + | 説明がほとんどなかったので中を解析して以下にやり方を記述する | |
==なぜ移行するか== | ==なぜ移行するか== | ||
行7: | 行7: | ||
php5.4以上にするとうまく表示されません。 | php5.4以上にするとうまく表示されません。 | ||
− | + | pukiwikiの更新も止まってるようなので移行。 | |
==移行ツール作者説明ページ== | ==移行ツール作者説明ページ== |
2015年10月2日 (金) 15:44時点における最新版
sugoiyo72氏が作ったp2m_wiki_converterツールを使ってpukiwikiからmediawikiへ移行
説明がほとんどなかったので中を解析して以下にやり方を記述する
目次
なぜ移行するか
pukiwikiがphp5.3までしか対応されておらず、 php5.4以上にするとうまく表示されません。
pukiwikiの更新も止まってるようなので移行。
移行ツール作者説明ページ
移行ツールを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()
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