PukiWiki1.47の構築でハマったので一応メモ

  • 投稿日:
  • by
  • カテゴリ:

かなり既知の事項なので今更ここに書くのも恥ずかしいが、忘れたらイヤなので一応メモ。
PukiWiki(1.47 utf-8版)のパーミッションを設定し、index.phpにアクセスすると何も表示されなくなります。
これだけでは訳が分からないので、index.phpのerror_reportingの引数を"E_ALL"に変更して再読み込みすると、hex2binがredeclareされていることが分かります。

Fatal error: Cannot redeclare hex2bin() in /home/wind/public_html/splunk/lib/func.php on line 323

いろいろググって調べた結果、PHP5.4でhex2binという関数がコア関数として追加されていることが分かりました。
で、lib/func.phpで使用しているので問題になっているようです。
このままでは動かないので、bugtrackingを参考にして修正。

function decode($key)
{
    if (function_exists('hex2bin')) {
        return hex2bin($key);
    }
    else {
        return internal_hex2bin($key);
    }
}

// Inversion of bin2hex()
function internal_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;
}

error_reportingの引数を元に戻さないと別のところを引っかけてしまうので注意。
# というか、これだけエラーが出ると、逆にちゃんとfixさせた方がいいんじゃないかと思うが...。

無事に表示されました。