ID: 40568 Updated by: paj...@php.net Reported By: JPlissonneauDuquene at bellhelicopter dot textr -Status: No Feedback +Status: Closed Bug Type: Filesystem function related Operating System: win32 only - WinXP PHP Version: 5.2.1 Assigned To: pajoye New Comment:
We use the new API now in 5.3+. Previous Comments: ------------------------------------------------------------------------ [2008-12-11 01:00:00] php-bugs at lists dot php dot net No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2008-12-03 13:36:42] paj...@php.net Please try using this CVS snapshot: http://snaps.php.net/php5.3-latest.tar.gz For Windows: http://windows.php.net/snapshots/ I changed the underlying code to use the windows native APIs. Please try it. ------------------------------------------------------------------------ [2008-07-02 10:18:50] marcello at vezz dot it Very easy reproduce code (should try it during daylight saving time): <?php $fullfilename='test.dll'; $ft=filemtime($fullfilename); touch($fullfilename.'.md5',$ft); $nt=filemtime($fullfilename.'.md5'); echo $ft.' : '.$nt; ?> Please get test.dll from http://www.vezz.it/php/test.zip Original file modification date: 19 feb 2008, 19.08.47 The script output: 1203440927 : 1203437327 The touched file date is one hour back. 19 feb 2008, 18.08.47 instead of 19 feb 2008, 19.08.47 In my opinion, this should really be fixed. ------------------------------------------------------------------------ [2008-05-01 00:38:37] louis at steelbytes dot com I've build a PHP extension to workaround this ... http://www.steelbytes.com/?mid=46 ------------------------------------------------------------------------ [2008-03-30 17:15:43] kbrobst at surveyresearchpartners dot com The same "Microsoft feature" is found under Windows Server 2003, 64-bit. Though previous test cases are well done, this one may be helpful as well: Try this experiment: $timestamp_str = "2005.02.06 14:45:33"; $timestamp_pieces=split('[. :]',$timestamp_str); $timestamp=mktime($timestamp_pieces[3], $timestamp_pieces[4], $timestamp_pieces[5], $timestamp_pieces[1], $timestamp_pieces[2], $timestamp_pieces[0]); touch("c:\\timestamp_test.txt",$timestamp); The file timestamp_test.txt shows up in the operating system as having a modification date of "Sunday, February 06, 2005, 2:45:33 PM" - which is the desired result. But now look at the results of filemtime (only when in DST - it will report the correct timestamp during standard time): $compare_timestamp=filemtime("c:\\timestamp_test.txt"); $compare_timestamp_str = date("Y.m.d H:i:s",$compare_timestamp); echo "$timestamp ($timestamp_str) is the original timestamp.<br />\n"; echo "$compare_timestamp ($compare_timestamp_str) is the timestamp on the file.<br />\n"; The output looks like this: 1107726333 (2005.02.06 14:45:33) is the original timestamp. 1107722733 (2005.02.06 13:45:33) is the timestamp on the file. The filemtime function reports a timestamp different from what the OS reports. I understand the "Microsoft should do it right" concept. But this issue is forcing me to have different PHP code based on the server OS - something I've not had to do much until now. ------------------------------------------------------------------------ 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/40568 -- Edit this bug report at http://bugs.php.net/?id=40568&edit=1