[ トップページ ]
Movable Type, プログラミングとコンパイラ

Movable Type 3.36 は 2038 年までしかつかえない ?!

このブログのためにつかっている Movable Type を 3.33j から 3.36 にバージョンアップしたことについては 「Movable Type 3.33j のバグ ― パーマリンクの勝手な変更」 に書きました. いれかえそのものは容易だったのですが,これによって項目を保存するときにエラーがでるようになり,ついには Movable Type のプログラムにパッチをあててしのぐことになりました.

Movable Type の ContextHandlers.pm というモジュールのなかでサマータイムの処理をしています. そこで timelocal(), localtime() というサブルーティン / 関数をつかっています. これらは Unix へ / からの変換をするため,2038 年よりさきの年はあつかうことができません. ところが,私はある項目のなかに 9999 年などという仮想的な年をつけているので,ここでエラーがおこるようになりました.

エラーが上記の場所でおこっていることは,エラー・メッセージからすぐにわかりました. しかたがないので,ここにパッチをあてて,サマータイムの処理をはずしました. 日本ではいまサマータイムがないし,もし導入されたとしても,この部分でそんなにおおきな問題がおこるともおもえないからです.

これがコメントアウトしたサマータイムの処理部分です: 
        # if ((localtime (timelocal ($s, $m, $h, $d, $mo, $y - 1900)))[8]) {
        #     $server_offset += 1;
        # }

3.33j ではサマータイムの処理をしていなかったので,この問題はなかったわけです. ブログの項目に未来の日付をつけているのがわるいといわれそうですが,しかし,もうすでに 2008 年なのにいまさら 2038 年までしかあつかえないコードを追加するというのは,かんがえられないことです.

それにしても,つまらないことで時間をとられてしまいました (;o;)

キーワード: 2038年問題

トラックバック

このエントリーのトラックバックURL:
http://east-japan-quake.info/mt504/mt-tb.cgi/2788

コメントを投稿

Google でブログを検索:

メインページアーカイブページも見てください.
Creative Commons License
このブログはつぎのライセンスで保護されています. クリエイティブ・コモンズ・ライセンス.