piano2nd.smb.net上の本PukiWikiをwww.smb.netへそっくりコピーしてアクセスすると、真っ白画面となって、何も表示しない。
で、PukiWikiの index.php の
//define('TDIARY_THEME', 'digital_gadgets');
のコメントを外して、エラー表示させてみると、
> php ./index.php PHP Fatal error: Cannot redeclare hex2bin() in /(some where)/pukiwiki/lib/func.php on line 317
となっている。
これは、http://pukiwiki.sourceforge.jp/dev/?BugTrack2%2F349 に記載されている
•hex2bin()が組み込み関数になってlib/func.phpの実装とぶつかってました.
と言うことらしい。
因みに、piano2nd は、
piano2nd# php -v PHP 5.3.14 with Suhosin-Patch (cli) (built: Jul 17 2012 11:19:37) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
一方の、Blackcubeは、
blackcube# php -v PHP 5.4.5 (cli) (built: Jul 26 2012 17:50:33) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
という結果。
さて、解決策はというと、 http://pukiwiki.sourceforge.jp/dev/?BugTrack2%2F349 に有るとおり、func.phpを以下のように書き換えることでhtmlファイルを出力するようになりました
// Decode page name function decode($key) { if (function_exists('hex2bin')) { return hex2bin($key); } else { return internal_hex2bin($key); } }
とした上で、つづいて喜寿されているbin2hex()の部分をファイル末尾に移動して以下の様に変更。
// hex2bin -- Converts the hex representation of data to binary // (PHP 5.4.0) // Inversion of bin2hex() if (! function_exists('hex2bin')) { 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; } }
/usr/home/kuji/public_html/pukiwiki-1.4.7/lib/func.php
現時点で没問題の模様 これで、piano2nd のWikiをblackcubeへ単純コピーでバックアップできる。ヽ(^。^)丿
以上