PHP:检查文件是否可以删除

时间:2018-07-15 09:09:54

标签: php

我想知道是否可以删除文件。

函数is_writable()不起作用,因为它不检查包含目录是否允许删除文件。

我也不能使用@unlink(),因为我首先生成了可删除文件的列表,并在进行了一些计算后仅删除了其中的一部分。

该问题的答案也没有检查目录是否允许删除文件:In PHP, check if a file can be deleted-因此,即使经过这么多年,看来这个简单的问题尚未得到回答。

3 个答案:

答案 0 :(得分:3)

正如@apokryfos在评论中指出的,您need to have write permission on the file's parent directory to delete a file within that directory。使用该信息进行检查可能像这样:

if (is_writable(dirname("/path/to/the/file.ext"))
{
    echo "File is deletable.";
}
else
{
    echo "File cannot be deleted.";
}

dirname()函数获取文件所在的目录。然后我们可以使用is_writable()来检查我们是否对该目录具有写权限。

答案 1 :(得分:2)

上面的代码缺少1个if子句pharenthese。该代码应显示为:

if (is_writable(dirname("/path/to/the/file.ext")))
{
    echo "File is deletable.";
}
else
{
    echo "File cannot be deleted.";
}

答案 2 :(得分:0)

您可以使用文件权限来找出目录权限是什么。

echo substr (sprintf ('% o', fileperms ('/ tmp')), -4);

然后使用is_writable()检查文件。