[PHP] PHP5.4でpukiwikiを動かす

日本製wikiとしてはおなじみのpukiwiki

2006年以降公式なバージョンアップもなく、開発フリーズな状態っぽいですが、海外含めたwikiの中でも非常に使いやすいので、いまだに重宝させてもらってます。

今回は、PHP5.4を導入した環境で画面真っ白になってしまったので、そのときの対応をまとめてみます。

とりあえず動くようにする

とりあえず真っ白画面から抜けだそうということで、Fatalエラーをつぶしていきます。
index.phpの10行目あたりにある以下のコメントアウトを外します。

error_reporting(E_ALL); // Debug purpose

その状態ででてきたFatalエラーについて対応します。
Fatalが出た時点で処理は止まってしまうので、Fatalを解決→ページを確認→Fatalを解決→・・・の流れになると思います。
おそらく、Warning,Notice,Deprecatedあたりもいっぱい出ると思いますが、ここでは一旦無視します。

 

自前環境では以下の2つを対応しました。

hex2bin関数をコメントアウト

lib/func.php にある「hex2bin」関数が、PHP5.4からネイティブ関数化されているためコメントアウト。

// Inversion of bin2hex()
/*
function hex2bin($hex_string)
{
        // preg_match : Avoid warning : pack(): Type H: illegal hex digit ...
        // (string)   : Always treat as string (not int etc). See BugTrack2/31
        return preg_match('/^[0-9a-f]+$/i', $hex_string) ?
                pack('H*', (string)$hex_string) : $hex_string;
}
*/

ls2プラグインの関数呼び出し時の参照渡しを修正

plugin/ls2.inc.php で、関数呼び出し時の参照渡しがされているため、修正。

array_walk($args, 'plugin_ls2_check_arg', & $params);
↓
array_walk($args, 'plugin_ls2_check_arg', $params);

 

これでさきほどコメントアウトを外した index.php のエラー出力をもとに戻すと、とりあえずは使える状態になりました。
現状は、Warning含めエラーを表示していないだけの状態で、同じようにPHP5.4対応されている以下のサイトにもあるように「date関数の設定値」「参照渡し」まわりや「クラスの継承」まわりなどで、もろもろ問題は残ってしまっている状況だと思います。
(dateの設定とかはやっておいたほうがベターかもしれません)

martianの日記: PHP5.4 と PukiWiki

 

今回は、ユーザ向けに提供しているシビアな環境ではなかったので、エラー発生ベースで直していく方針にしています。
クリティカルな問題がでてきてしまったら、追記していきたいと思います。

viva pukiwiki