|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-02-09 00:56 UTC] vaughan at ucla dot edu
<?
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'));
?>
The above script gives the following output:
server timezone is: America/Los Angeles
server time is: February 9, 2003, 6:45 am
changing server time zone to US/Pacific....
new server time is: February 8, 2003, 10:45 pm
new server timezone for this script is: US/Pacific
the correct date and time in Los Angeles at the time of running the script is: February 8, 2003, 10:45 pm
The date command on the system gives the correct time and date.
/etc/timezone contains US/Pacific
setting environment variable TZ=US/Pacific before restarting apache has no effect on the above script.
PHP configure line:
'./configure' '--with-mysql' '--with-apxs' '--with-config-file-path=/etc/php4/apache' '--enable-track-vars' '--enable-trans-sid' '--with-sybase=/usr/local/freetds' '--with-ldap' '--with-imap' '--with-curl=/usr' '--with-pgsql=/usr/include/postgresql' '--with-gd' '--with-xml' '--enable-cli'
Apache/1.3.26
Apache modules are: mod_php4, mod_ssl, mod_perl, mod_dav, mod_setenvif, mod_unique_id, mod_expires, mod_auth, mod_access, mod_rewrite, mod_alias, mod_userdir, mod_cgi, mod_dir, mod_autoindex, mod_status, mod_negotiation, mod_mime, mod_log_config, mod_macro, mod_so, http_core
This could be a problem with the underlying debian (2.2.19 kernel) system, but I thought I should report it.
Thank you.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 01:00:02 2025 UTC |
here's what I do, as root: # export TZ='America/Los_Angeles' # set | grep TZ # TZ=America/Los_Angeles # apachectl stop /usr/sbin/apachectl stop: httpd stopped # apachectl start /usr/sbin/apachectl start: httpd started output of the php script: server timezone is: America/Los Angeles server time is: February 9, 2003, 7:51 pm changing server time zone to US/Pacific.... new server time is: February 9, 2003, 11:51 am new server timezone for this script is: US/Pacific I notice that PHP does not pick up the underscore in "Los_Angeles". What I wondered was whether there's a way to do the equivalent of putenv("TZ=US/Pacific") in php.ini? However, I have just noticed that the time is wrong in OTRS running on the same server -- and it is a set of perl scripts. So maybe this is not a PHP bug at all?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 helpYou'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".As your first script mentioned, the output for getenv('TZ') was "America/Los Angeles" which is wrong..sniper@php.net 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?