Warning: unpack(): Type H: outside of string (with PHP 4.3.10)†
- ページ: BugTrack
- 投稿者: tokiwa
- 優先順位: 普通
- 状態: 完了
- カテゴリー: その他
- 投稿日: 2004-12-22 (水) 10:31:04
- バージョン: 1.4.4
unpack in PHP4.3.10†
PHP4.3.10にするとPukiWiki1.4.4の"差分を削除"を行うとunpack(func.phpのencode関数内)で"Warning: unpack(): Type H: outside of string)"が出でます。ただencode関数を呼ぶのdiffプラグインだけじゃないので、なぜこの場合だけ警告がでるのかわかりません。
これと関係があるのかもしれませんが、次のようなNoticeもでました。"Notice: Undefined index: plugin in ...\pukiwiki\skin\pukiwiki.skin.ja.php"
確認お願いします。
現象が起きた環境は Windows2000SP4, Apache2.0.52, PHP4.3.10, PukiWiki1.4.4 です。
Warning: unpack(): Type H: outside of string in /pukiwiki-1.4.4_php5/lib/func.php on line 246
- 「差分の削除」でだけ上記Warningが出る理由は、それを担当している関数 plugin_diff_delete() の先頭に error_reporting(E_ALL) が埋め込まれていたためでしょう。(現在のCVS版からは削除されています) -- henoheno
- phpBB: PHP4.3.10に伴う警告表示に対処しました
- とりあえず unpack()ではなく bin2hex () を使え、ということになりそうですね。 -- henoheno
- unpack() が上記のWarningを出す様になった経緯は、推測でしかありませんが、PHPにおけるunpack()側の「 PHP は内部的に整数を符号付で保持します。 大きな値の unsigned long を切出した場合、PHP の内部で保持された値は、 同じ大きさの符号付き整数となり、符号無しを指定して切出された場合でも 結果は負の数となります。」(マニュアルより)といった様な今までの内部処理的な都合と、integer overflowを強制的に止める(負になった値を強制的に0にするついでにWarningを出す)処理を追加した都合によるものではないかと思っています。 -- henoheno
- cvs:lib/func.php (1.21)
- お疲れ様です。報告しっぱなしですみませんでした (^^; -- でぃあばぁ
- いえいえ、前情報あればこそです :) -- henoheno
- 本題の件が終了しているようなので完了にしておきます。 -- Ratbeta