ID:               38154
 Updated by:       [EMAIL PROTECTED]
 Reported By:      dave at smartboy dot com
-Status:           Open
+Status:           Assigned
 Bug Type:         Date/time related
 Operating System: Windows XP
 PHP Version:      5.1.4
 Assigned To:      derick


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

[2006-07-23 04:07:27] dave at smartboy dot com

Changed test_filemtime.php to:

<?php

echo filemtime($_SERVER["SCRIPT_FILENAME"]) . "\n";
date_default_timezone_set("UTC");
echo filemtime($_SERVER["SCRIPT_FILENAME"]) . "\n";


Output is:

$ php test_filemtime.php
1153659348
1153659348


So, the return from filemtime() is not affected by the date.timezone
setting.  However the value is out by 9 hours.  This is the expected
return value: 

$ stat -c%Z test_filemtime.php
1153626948

(this matches very closely the output of date +%s, as I had just saved
the file when running the above command)

And the difference is 9 hours

$ echo $((1153659348-1153626948))
32400

$ echo $((9*3600))
32400

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

[2006-07-22 08:33:08] [EMAIL PROTECTED]

Can you get rid of the date() calls so that we can rule out that that
is the problem and not filemtime?

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

[2006-07-22 01:41:08] dave at smartboy dot com

Setting date.timezone does not change the behaviour.  Changing the
sample script to:

<?php

echo "default timezone: " . date_default_timezone_get() . "\n";

date_default_timezone_set("Australia/Brisbane");

echo "default timezone: " . date_default_timezone_get() . "\n";

echo date('Y-m-d H:i:s', filemtime($_SERVER["SCRIPT_FILENAME"])) .
"\n";


produces this output:

$ php test_filemtime.php
default timezone: Australia/Melbourne
default timezone: Australia/Brisbane
2006-07-22 20:35:22

Which is still 9 hours greater than it should be.

When using Apache2 SAPI, the following (correct) output is generated:

default timezone: Australia/Melbourne
default timezone: Australia/Brisbane
2006-07-22 11:35:22


Changing "Australia/Brisbane" to "UTC" changes the time that is
printed, however there is still a 9 hour difference between the value
printed by CLI (2006-07-22 10:39:47) and the value printed by Apache2
SAPI (2006-07-22 01:39:47)

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

[2006-07-20 15:20:07] [EMAIL PROTECTED]

Set date.timezone to your timezone.

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

[2006-07-19 23:26:41] dave at smartboy dot com

Description:
------------
Using PHP CLI on Windows - filemtime() returns an incorrect value.

This problem does NOT occur with the Apache 2 SAPI.

Value reported is ahead by 9 hours (could be time zone related?  I am
in GMT+10:00 time zone)

Sample output:

$ php test_filemtime.php
2006-07-20 18:20:08

$ ls -l test_filemtime.php
-rw-r--r-- 1 Dave None 81 Jul 20 09:20 test_filemtime.php

(the above from Cygwin)

When running the exact same script inside Apache2 the correct time is
printed

2006-07-20 09:20:08


Reproduce code:
---------------
<?php

echo date('Y-m-d H:i:s', filemtime($_SERVER["SCRIPT_FILENAME"])) .
"\n";

Expected result:
----------------
2006-07-20 09:20:08

Actual result:
--------------
2006-07-20 18:20:08


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


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

Reply via email to