代码如下:var_dump(unlink("update1.log"));  //true
$handle=fopen("update1.log","w"); //创建文件
fwrite($handle,date("Y-m-d H:i:s"));
fclose($handle);
预期结果为update1.log的创建时间能变更为fopen()创建文件时的时间。实际结果是:update1.log的创建时间一直是第一次创建时的时间,就仿佛没有unlink()过一样。百思不得其解~求各位大虾谁能帮忙解惑一下~PS:我的操作系统是win7

解决方案 »

  1.   

    代码没有问题 有没有提示什么 是否是权限的问题
    单执行 var_dump(unlink("update1.log"));  //true 这一句看下文件有没有删除掉
      

  2.   

    代码应该没有问题.单独执行var_dump(unlink("update1.log"))这一句可以删除文件然后再单独执行
    $handle=fopen("update1.log","w"); //创建文件
    fwrite($handle,date("Y-m-d H:i:s"));
    fclose($handle);
    这一段也可以新创建文件,并且文件的创建时间为最新创建的时间
      

  3.   

    这可奇怪了,我也是win7的,我亲身试验过很多次,文件的创建时间木有更新啊~
      

  4.   

    楼上几位有点想当然了事实的确与楼主观察到得一样,至少在 window 系统中是这样的不过这与 php 没有关系,是文件系统的原因
    估计是当删除文件时并未清除目录项(只做了删除标志),当再次创建时又使用了原先的目录项
    可以认为“文件创建时间”应该是目录项的创建时间php 有取得该时间的函数 filectime
      

  5.   

    楼上说的有道理,有谁知道linux下是什么情况么?
      

  6.   


    microsoft@microsoft-System-Product-Name:/var/www$ more update1.log 
    2012-02-23 11:50:48
    microsoft@microsoft-System-Product-Name:/var/www$ php -q 123.php
    bool(true)
    microsoft@microsoft-System-Product-Name:/var/www$ more update1.log
    2012-02-23 11:51:21
    microsoft@microsoft-System-Product-Name:/var/www$ 没有问题的.
      

  7.   

    楼上,你是把删除和创建update1.log分成两个php文件来执行,这样在window系统下也没有问题啊。我是想知道在同一个php文件中删除然后接着创建同文件名的文件在linux系统下会不会和在window系统下一样有问题~
      

  8.   

    本帖最后由 PhpNewnew 于 2012-02-27 11:51:12 编辑
      

  9.   

    (⊙v⊙)嗯,我发了帖两秒之后就意识到这个错误了,却删不了回复,这是csdn的bug么?
      

  10.   


    這個不是bug,csdn就是這樣的,這叫白紙黑字,呈堂證供...
      

  11.   

    不能删它给我个删除按钮做啥子?分明就是bug~
      

  12.   


    如果没有人回复之前,你可以删除掉自己发的主题,回收自己的帖子.不过说回来,csdn这个论坛的确有很多人为制造的bug...哈哈哈