ID: 29654
User updated by: kulakov74 at yandex dot ru
Reported By: kulakov74 at yandex dot ru
Status: Closed
Bug Type: Feature/Change Request
Operating System: Linux
PHP Version: 4.3.7
Assigned To: derick
New Comment:
Though this is an old issue, I had to revisit it, and I found:
1. I can delete an env. var. by putenv('TZ') - a user comment explains
that, but the docs does not
2. I cannot reproduce the problem any more - even if I leave the wrong
timezone it never shows in consequent requests. Note that the version is
4.1.2. Perhaps something has changed in PHP but I can't test it!
Previous Comments:
------------------------------------------------------------------------
[2005-06-20 09:43:12] [EMAIL PROTECTED]
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
This is implemented (partly) in PHP 5.1 by adding a new configure
setting "date.timezone" that configures the default timezone for all
date functions.
------------------------------------------------------------------------
[2004-09-03 11:52:34] [EMAIL PROTECTED]
The feature request is already on my todo, should be in 5.1.
------------------------------------------------------------------------
[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