当使用PHP复制一个文件如下所示:
$result = copy( 'C:\xampp\htdocs\MISCELLANEOUS\Test\FilesAndFolders.php', 'C:\xampp\htdocs\MISCELLANEOUS\Test\backups\FilesAndFolders_version1.php' ); echo $result;
文件的“创builddate”时间戳正确反映了文件最初被复制的时间。 但是,如果复制的文件被删除,并且使用备份文件完全相同的名称再次执行复制操作,则“创builddate”反映的是第一次复制文件而不是后续复制的时间。
例如,当…备份\ FilesAndFolders_version1.php第一次创build该文件有一个创builddate为8/26/2016 8:36 PM。 删除该文件,并试图在下午9:03复制它,该文件的创builddate仍然说2016/8/26 8:36 PM(时间部分应该是下午9:03)。 为什么不是更新到后续复制操作的实际时间? 有没有办法强制更新?
附加信息
即使系统重新启动后,这种行为也是一样的 – 时间戳不会更新。 机器的操作系统是Windows 7。
从Windows资源pipe理器复制/粘贴显示相同的行为。 这就排除了PHP代码存在问题。 删除“备份”文件夹然后重新创build它允许复制的文件的创builddate在文件第一次被复制时被更新,但在备份文件被删除后不被复制。
有可能在不同的Windows 7电脑上重现此行为。
这种行为与文件系统相关,而不是PHP,它实际上是故意的。 这就是所谓的“文件系统隧道”,可以禁用此行为。 请参阅此链接了解更多详情: https : //superuser.com/questions/715536/wrong-date-created-for-files-in-windows-when-copying-files-if-the-file-has-alre