facebook twitter hatena line email

「Cms/mediawiki/pukiwikiからmediawikiへ移行」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(なぜ移行するか)
 
(同じ利用者による、間の7版が非表示)
行1: 行1:
 
sugoiyo72氏が作ったp2m_wiki_converterツールを使ってpukiwikiからmediawikiへ移行
 
sugoiyo72氏が作ったp2m_wiki_converterツールを使ってpukiwikiからmediawikiへ移行
  
一切説明がなかったので中を解析して以下にやり方を記述する
+
説明がほとんどなかったので中を解析して以下にやり方を記述する
  
 
==なぜ移行するか==
 
==なぜ移行するか==
行7: 行7:
 
php5.4以上にするとうまく表示されません。
 
php5.4以上にするとうまく表示されません。
  
更新も止まってるようなので移行します。
+
pukiwikiの更新も止まってるようなので移行。
  
 
==移行ツール作者説明ページ==
 
==移行ツール作者説明ページ==
行46: 行46:
  
 
出てくるボタンをポチっていく。
 
出てくるボタンをポチっていく。
 
==hex2bin()のエラー==
 
hex2bin()のエラーが出た時はpukiwikiのlib/func.phpのhex2bin()関数を削除(php5.4以上だと出る)
 
PHP Fatal error:  Cannot redeclare hex2bin()
 
  
 
==hex2bin()のエラー==
 
==hex2bin()のエラー==
行57: 行53:
 
==pukiwiki整形をmediawiki整形に置換==
 
==pukiwiki整形をmediawiki整形に置換==
 
*actions/uploadToMediaWiki.phpの以下場所に置換ロジックを追加
 
*actions/uploadToMediaWiki.phpの以下場所に置換ロジックを追加
 +
足りないところは追加ください。
 
  function uploadWikiPage ($wiki) {
 
  function uploadWikiPage ($wiki) {
 
     $params = $this->getParamsForPageUpload($wiki);
 
     $params = $this->getParamsForPageUpload($wiki);
行93: 行90:
  
 
==不要なページを移行後削除する==
 
==不要なページを移行後削除する==
+.htaccess
+
*.htaccess
+Config/plugin/tracker
+
*Config/plugin/tracker
+Index.html
+
*Index.html
+PukiWiki/1.4
+
*PukiWiki/1.4
+PukiWiki/1.4/Manual
+
*PukiWiki/1.4/Manual
+PukiWiki/1.4/Manual/Plugin/A-D
+
*PukiWiki/1.4/Manual/Plugin/A-D
+PukiWiki/1.4/Manual/Plugin/E-G
+
*PukiWiki/1.4/Manual/Plugin/E-G
+PukiWiki/1.4/Manual/Plugin/H-K
+
*PukiWiki/1.4/Manual/Plugin/H-K
+PukiWiki/1.4/Manual/Plugin/L-N
+
*PukiWiki/1.4/Manual/Plugin/L-N
+PukiWiki/1.4/Manual/Plugin/O-R
+
*PukiWiki/1.4/Manual/Plugin/O-R
+PukiWiki/1.4/Manual/Plugin/S-U
+
*PukiWiki/1.4/Manual/Plugin/S-U
+PukiWiki/1.4/Manual/Plugin/V-Z
+
*PukiWiki/1.4/Manual/Plugin/V-Z
+RenameLog
+
*RenameLog
  
 
==各種バージョン==
 
==各種バージョン==

2015年10月2日 (金) 15:44時点における最新版

sugoiyo72氏が作ったp2m_wiki_converterツールを使ってpukiwikiからmediawikiへ移行

説明がほとんどなかったので中を解析して以下にやり方を記述する

なぜ移行するか

pukiwikiがphp5.3までしか対応されておらず、 php5.4以上にするとうまく表示されません。

pukiwikiの更新も止まってるようなので移行。

移行ツール作者説明ページ

http://weblog.sugoiyo.com/2014/04/02/%E3%80%90%E7%A7%BB%E8%A1%8C%E3%83%BB%E5%A4%89%E6%8F%9B%E7%94%A8%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%80%91pukiwiki-to-mediawiki/

移行ツールを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