ID: 22135 User updated by: vaughan at ucla dot edu Reported By: vaughan at ucla dot edu -Status: Feedback +Status: Open Bug Type: Date/time related Operating System: Linux (debian) PHP Version: 4.2.3 New Comment:
[EMAIL PROTECTED] wrote: <snip> You should set the timezone correctly before you _start_ apache, in the shell..</snip> I tried that..see my posting below from 9 Feb 1:54pm. Even when TZ is set correctly in the shell to 'America/Los_Angeles' before starting apache, php's getenv('TZ') reports "America/Los Angeles" as the timezone. If I set TZ to 'US/Pacific' in the shell, stop and start apache, php still reports the timezone incorrectly as "America/Los Angeles". So, if PHP does not seem to be picking up the timezone from the environment. Again, the only way I can affect the timezone is using putenv(). Not sure where to go from here. Perhaps pull from CVS and recompile? Previous Comments: ------------------------------------------------------------------------ [2003-02-25 02:27:31] [EMAIL PROTECTED] As your first script mentioned, the output for getenv('TZ') was "America/Los Angeles" which is wrong.. ------------------------------------------------------------------------ [2003-02-25 02:26:31] [EMAIL PROTECTED] SetEnv in httpd.conf has no effect on PHP. You should set the timezone correctly before you _start_ apache, in the shell.. ------------------------------------------------------------------------ [2003-02-24 10:38:00] vaughan at ucla dot edu You're right. I should have used "America/Los_Angeles". results: experiment #1, using putenv("TZ=America/Los_Angeles"); php produces the correct time after this, but not before (that is, doesn't pick up TZ from the system). experiment # 3, SetEnv TZ=America/Los_Angeles in httpd.conf has no effect -- the time is still wrong until I use putenv with either "US/Pacific" or "America/Los_Angeles". ------------------------------------------------------------------------ [2003-02-22 13:37:46] michael dot mauch at gmx dot de I don't see a /usr/share/zoneinfo/US/Los_Angeles on Debian, only America/Los_Angeles (and US/Pacific). So I suggest you try again with America/Los_Angeles. ------------------------------------------------------------------------ [2003-02-22 11:37:58] vaughan at ucla dot edu no, TZ is not being set in httpd.conf nor in apachectl. Experiment #1 What happens if we use putenv("TZ=US/Los_Angeles")? the script: <? print("server timezone is: " . getenv('TZ') . "<br>\n"); print("server time is: " . date("F j, Y, g:i a") . "<br>\n"); print("changing server time zone to US/Los_Angeles....<br>\n"); putenv("TZ=US/Los_Angeles"); print("new server time is: " . date("F j, Y, g:i a") . "<br>\n"); print("new server timezone for this script is: " . getenv('TZ')); ?> here's the output, with the incorrect times: server timezone is: America/Los Angeles server time is: February 22, 2003, 5:01 pm changing server time zone to US/Los_Angeles.... new server time is: February 22, 2003, 5:01 pm new server timezone for this script is: US/Los_Angeles output of date(T):US/Los_Angeles Experiment # 2: I also tried putting SetEnv US/Pacific into httpd.conf. this script: print("server timezone is: " . getenv('TZ') . "<br>\n"); print("server time is: " . date("F j, Y, g:i a") . "<br>\n"); print("changing server time zone to US/Pacific....<br>\n"); putenv("TZ=US/Pacific"); print("new server time is: " . date("F j, Y, g:i a") . "<br>\n"); print("new server timezone for this script is: " . getenv('TZ')); produces this output: server timezone is: US/Pacific server time is: February 22, 2003, 5:29 pm changing server time zone to US/Pacific.... new server time is: February 22, 2003, 9:29 am new server timezone for this script is: US/Pacific output of date(T):PST In this case, PHP picks up the US/Pacific timezone from the environment, but gets the time wrong! Experiment # 3 try with SetEnv = US/Los_Angeles in httpd.conf same script as #2, produces bad output: server timezone is: US/Los_Angeles server time is: February 22, 2003, 5:34 pm changing server time zone to US/Pacific.... new server time is: February 22, 2003, 9:34 am new server timezone for this script is: US/Los_Angeles output of date(T):PST So it seems to be the case that the ONLY way to get PHP to have the correct time is to use putenv("TZ=US/Pacific") in a script. Any other ideas? Thanks for your help ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/22135 -- Edit this bug report at http://bugs.php.net/?id=22135&edit=1