ちょっとやりたいことがあって、Windows 7でpukiwikiが動く環境を作ろうと思い、インストールしてみることにしました。
使うものは「XAMPP」と「pukiwiki」です。
なお、pukiwikiのWeb公開までは考慮しておらず、あくまでもローカル端末上でpukiwiki形式のページが表示できればよい、という程度の志で進めます。
XAMPPのインストール
今回は、pukiwikiをXAMPP上で動作させます。
XAMPPのダウンロード
以下のサイトから、最新版の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のページが表示されるはずです。
トラブルシューティング
pukiwikiはhtdocs
フォルダの中身を持っていくだけで移行できますが、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
引数の参照渡しが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
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をローカル限定ですが復活させることができました。
すでにインターネットマルチモードはサービスを終了していますが、基本的にはオフラインで遊ぶひとだったので、あまり問題はありません。
ただ、今ではオフラインの情報遺産すら無くなりつつあるので、少し頑張ってみました。
おすすめの便利サポートキャラクターの編成情報とか、かなり貴重です。