php bug
PHPを5.2.10にしてから数日。
5.3系でおきていたdeprecatedも出なくなりそれなりに動いていると思っていました。
しかーし。ふとBlogに投稿してみたときに不具合が。
「投稿したものが表示されない」
んー。なぜに。
管理画面で確認してみたら投稿自体はあるものの、日付が「0000-07-24」とかになっている。
DBの中身も確認してみたら、本当に「0000-07-24」とかになっていた。
てことで表示上の問題でもない。
DB格納時にレンジが外れていると0000-00-00とかになるはずなのでDBのせいではないですね。綺麗に年だけだし。
WordPressのバージョンも変えているので、WordPressのせいかともおもったのですが、そんな報告は見当たらず。
発生日付をみてみると、PHP 5.2.10に上げた日から発生している模様。
で、php.netで調べたらこんなのありました。
http://bugs.php.net/bug.php?id=49079
ははぁ。
ext/date/php_date.c
こいつか。
ちなみに当該箇所は各バージョンではこの様になってました。
PHP 5.2.9)
case 'Y': length = slprintf(buffer, 32, "%s%04d", t->y < 0 ? "-" : "", abs((int) t->y)); break;
PHP 5.3.0)
case 'Y': length = slprintf(buffer, 32, "%s%04lld", t->y < 0 ? "-" : "", llabs((timelib_sll) t->y)); break;
PHP 5.2.10
case 'Y': length = slprintf(buffer, 32, "%s%04ld", t->y < 0 ? "-" : "", llabs(t->y)); break;
なぜにこんなとこが毎回毎回変わるのかと・・・
とりあえず、5.2.10の当該箇所を書き換えてmakeし直して完了〜。
その後は今までどおり2009-07-24となっております!