time value too large/small to represent
Latest update:
После перезагрузки виртуальной машины, в жерле которой мирно крутятся некоторые Tcl CGI скрипты, эти самые скрипты внезапно перестали работать, выплевывая вот такое сообщение:
time value too large/small to represent
while executing
"::tcl::clock::ConvertLocalToUTC $date[set date {}] $TZData($timeZone) $changeover"
(procedure "::tcl::clock::scanproc'%A, %d %B %Y, %T'c" line 33)
Это была реакция на самую невинную комманду:
clock scan {Monday, 28 September 2009, 22:11:00} -format {%A, %d %B %Y, %T}
Конечно, она замечательно исполняется, если ее попробывать, например в tkcon. В же чем проблема?
Как оказалось, environment variable TZ при старте Apache (еще до login prompt в FreeBSD) не успевает быть установленной--то есть Apache ее inherit, если она есть. А для этого нужно:
# setenv TZ Europe/Kiev
# /usr/local/etc/rc.d/apache22 restart
И тогда все начинает опять работать правильно. Капитан Очевидность потирает руки.
Или, можно, на всякий случай, всегда устанавливать TZ руками в Tcl-скрипте:
set env(TZ) Europe/Kiev
Или, сделать вот такой симлинк:
# ln -s /usr/share/zoneinfo/Europe/Kiev /etc/localtime
Последний способ, по идее, есть самый универсальный.
Tags: ойті
Authors: ag