php文件是可写的但无法删除

时间:2012-08-24 22:08:33

标签: php unlink

我正在使用此功能。 is_file和is_writable返回true,但是当我真的取消链接时,它会给出错误。这是在Windows服务器上。

if(is_file($fileToDelete)) {
  if(is_writable($fileToDelete)) {
    unlink($fileToDelete);
  }
}

该文件是PDF文档,我已打开。我认为is_writable在这种情况下会返回false,但事实并非如此。

那么如何判断文件是否可以删除?

谢谢

3 个答案:

答案 0 :(得分:5)

那反过来呢?只是尝试删除文件并检查它是否真的消失了?

@unlink($fileToDelete);

if(is_file($fileToDelete)) {
   // file was locked (or permissions error)
}

不确定这在您的具体情况下是否可行,但根据您问题中的代码判断,这应该是您想要的。

答案 1 :(得分:1)

您使用的是该文件吗?我的意思是,你是通过fopen($ file)打开它吗?

在尝试删除文件之前,请执行fclose($ file)。

答案 2 :(得分:0)

对于那些不想在检查前删除文件的人,解决方案就在这里:

$file = "test.pdf";

if (!is_file($file)) {
    print "File doesn't exist.";
} else {
    $fh = @fopen($file, "r+");
    if ($fh) {
        print "File is not opened and seems able to be deleted.";
        fclose($fh);
    } else {
        print "File seems to be opened somewhere and can't be deleted.";
    }
}

简单而有效。