我正在使用此功能。 is_file和is_writable返回true,但是当我真的取消链接时,它会给出错误。这是在Windows服务器上。
if(is_file($fileToDelete)) {
if(is_writable($fileToDelete)) {
unlink($fileToDelete);
}
}
该文件是PDF文档,我已打开。我认为is_writable在这种情况下会返回false,但事实并非如此。
那么如何判断文件是否可以删除?
谢谢
答案 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.";
}
}
简单而有效。