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