ID:               29654
 Updated by:       [EMAIL PROTECTED]
 Reported By:      kulakov74 at yandex dot ru
-Status:           Bogus
+Status:           Assigned
 Bug Type:         Date/time related
 Operating System: Linux
 PHP Version:      4.3.7
-Assigned To:      
+Assigned To:      derick
 New Comment:

The feature request is already on my todo, should be in 5.1.


Previous Comments:
------------------------------------------------------------------------

[2004-09-03 10:58:20] kulakov74 at yandex dot ru

Thanks for the answer, there's certainly no bug here, but I want to
make it a feature request this way: the fact that there's no way to
unset an environment variable makes it impossible to recover the
initial state when there's no timezone set. Note that when TZ is not
set and when it is set to an empty string are two different things -
the first uses the locale of the server, while the second uses GMT. In
this situation the only way to leave the process with the correct
timezone is to set it directly, but then one has to know it, and this
is not very convenient. First of all, you can't just have a piece of
code that does all the task - whenever you deploy it to another server
you have to somehow tell it the server's timezone - either via config
files or by hardcoding; after all, one may just forget it. What I mean
is that PHP badly lacks a function for unsetting environment variables.

------------------------------------------------------------------------

[2004-08-16 08:37:44] [EMAIL PROTECTED]

But you DO need to set it back immediately as the function modifies the
environment which is also used by requests to the same apache child. No
bug here.

------------------------------------------------------------------------

[2004-08-13 16:51:49] kulakov74 at yandex dot ru

Description:
------------
I tried putenv('TZ=...') to get local time for any timezone. After
that, if I don't call putenv('TZ=...') using date/time functions
(date()) in consequent requests randomly return either local time or
the time for the zone last set with TZ. In Apache access_log's time
offsets also vary. It seems that Apache proccesses remember the time
for the timezone set with TZ and use it for consequent requests. 

Unfortunately, there's no function for deleting an environment
variable. Even though with consequent requests TZ seems to be
undefined, date functions work as if it were set for the last value. 

For a reason, calling mktime(0,0,0,1,1,1970) clears Apache's processes
internal time, but that happens only on subsequent requests, not within
the same one. 

Of course, one can use putenv('TZ=...') for setting local timezone back
after working with a different timezone, but anyway I guess that
shouldn't be the way it is. 

We use Apache 2. 

Reproduce code:
---------------
//first request:
echo(date('H:i:s').'<BR>'); //localtime
putenv('TZ=Europe/Moscow');
echo(date('H:i:s').'<BR>'); //Moscow time - works okay

//at consequent requests:
echo(date('H:i:s').'<BR>'); //may produce local or Moscow time,
depending on which Apache process handles the request

Expected result:
----------------
see above

Actual result:
--------------
see above


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=29654&edit=1

Reply via email to