「pukiwiki」をWindows 7(64bit)にインストールしました

ちょっとやりたいことがあって、Windows 7pukiwikiが動く環境を作ろうと思い、インストールしてみることにしました。

 

使うものは「XAMPP」と「pukiwiki」です。

なお、pukiwikiのWeb公開までは考慮しておらず、あくまでもローカル端末上でpukiwiki形式のページが表示できればよい、という程度の志で進めます。

XAMPPのインストール

今回は、pukiwikiをXAMPP上で動作させます。

XAMPPのダウンロード

以下のサイトから、最新版のXAMPPをダウンロードします。

Download XAMPP

Windows向けのインストーラは32bit版しかないようですが、一応は動くようです。

最新版といいつつ、メジャーバージョンがいくつかあったので、とりあえず一番上の5.6.30を選択。そして、個人的な理由でPortable版にしています。

旧バージョンをダウンロードしたい場合は、「More Downloads »」というリンクから選べます。

XAMPPのインストール

exe版をダウンロードした場合はそのまま実行してください。

zip版、7z版をダウンロードした場合は任意のフォルダに展開してください。

ここでは、C:\xamppというパスになるようインストールした、という前提で進めます。

上記以外の場所にインストールした場合は、インストール完了後に\xampp\setup_xampp.batを実行してください。インストールパスの設定更新が行われます。

XAMPPを起動

C:\xampp\xampp_start.exeを実行してください。

http://localhostに接続し、XAMPPのページが表示されれば正常に起動しています。

pukiwikiのインストール

次に、pukiwikiをXAMPP上に配置します。今回は、現在の最新版である1.5を使用しています。

pukiwikiのダウンロード

以下のサイトから、最新版のpukiwikiをダウンロードします。

PukiWiki/Download/1.5.1 - PukiWiki-official

EUC-JPはUNIX系OSで主流の文字コードであり、Windows向けであればUTF-8版でよいと思います。

pukiwikiのインストール

ダウンロードしたzipファイルの中にはpukiwiki-1.5.1_utf8というフォルダが入っています。

このフォルダをC:\xampp\htdocsフォルダに展開し、シンプルに「pukiwiki」というフォルダにリネームします。

その後、http://localhost/pukiwikiにアクセスすると、今度はpukiwikiのページが表示されるはずです。

トラブルシューティング

pukiwikihtdocsフォルダの中身を持っていくだけで移行できますが、phpや各種ツールのバージョンが異なるだけでさまざまなエラーが発生します。

エラーの内容については、C:\xampp\htdocs\pukiwiki\index.phpファイル内に記述されているerror_reporting(E_ALL);コメントアウトを一時的に外すことで確認できます。

今回の件で発生したエラーの解消方法について、いくつか書いておきます。

Strict Standards

Strict Standards: Declaration of Heading::canContain() should be compatible with Element::canContain($obj) in C:\xampp\htdocs\pukiwiki\lib\convert_html.php on line 263

BugTrack/2349 - PukiWiki-dev

引数の参照渡しがNGとのこと。

function canContain(& $obj)
{
	return FALSE;
}

こういった関数の引数にある& を削除します。

function canContain($obj)
{
	return FALSE;
}

Deprecated

Deprecated: ini_set(): Use of mbstring.http_input is deprecated in C:\xampp\htdocs\pukiwiki\lib\init.php on line 104

SOY CMS フォーラム • トピックの表示 - php.config.php でのinternal_encoding設定について

ini_set()は非推奨とのこと。

ini_set('mbstring.http_input', 'pass');

ini_set()を使っている部分を置き換えます。

//ini_set('mbstring.http_input', 'pass');
mb_http_input('pass');

Notice

Notice: Only variable references should be returned by reference in C:\xampp\htdocs\pukiwiki\lib\convert_html.php on line 145 

BugTrack/2146 - PukiWiki-dev

return時に参照で渡すな、ということらしい。たぶん。

if (substr($text, 0, 1) == '~') {
	return new Paragraph(' ' . substr($text, 1));
} else {
	return new Inline($text);
}

newした変数を同じ行でreturnしているのは、一度変数に詰めてからreturnすれば良いとのこと。

if (substr($text, 0, 1) == '~') {
	//return new Paragraph(' ' . substr($text, 1));
	$_ret_object = new Paragraph(' ' . substr($text, 1));
} else {
	//return new Inline($text);
	$_ret_object = new Inline($text);
}
return $_ret_object;

別のパターンでは、代入と同時にreturnしているものも、別の行に分けるべきだそうです。

//return $this->last = $obj->last;
$this->last = $obj->last;
return $this->last;

おまけ

pukiwikiを動かしたかった理由ですが、PSPo2iでお世話になっていたwikiが無くなっていたためです。

幸いにも、一度終了が宣言されたころに、ページのバックアップファイルが公開されていたため、かなり古いバージョンではありますが、puikiwiki形式のファイルが手元に残っていました。

XAMPPをインストールし、pukiwikiを配置し、そこに「psp2i-wiki.tgz」の中身を上書きすることで、無事に参照できるようになりました

 

なお、いくつかのページが真っ白になってしまいましたが、ここもエラーを確認して解消することができました。

「Fatal error: Call-time pass-by-reference has been removed」の対処 | dogmap.jp

Fatal error: Call-time pass-by-reference has been removed in C:\root\data\Application\xampp\htdocs\psp2i-wiki\plugin\table_edit2.inc.php on line 112
//$head_button = $tei->open_close($opt['table_mod'],& $opt['edit']);
$head_button = $tei->open_close($opt['table_mod'],$opt['edit']);
Fatal error: Call-time pass-by-reference has been removed in C:\xampp\htdocs\psp2i-wiki\plugin\pcomment.inc.php on line 83
//array_walk($args, 'plugin_pcomment_check_arg', & $params);
array_walk($args, 'plugin_pcomment_check_arg', $params);

これで、懐かしのwikiをローカル限定ですが復活させることができました。 psp2i-wiki_local_170422

すでにインターネットマルチモードはサービスを終了していますが、基本的にはオフラインで遊ぶひとだったので、あまり問題はありません。

ただ、今ではオフラインの情報遺産すら無くなりつつあるので、少し頑張ってみました。

おすすめの便利サポートキャラクターの編成情報とか、かなり貴重です。