我想知道是否可以删除文件。
函数is_writable()
不起作用,因为它不检查包含目录是否允许删除文件。
我也不能使用@unlink()
,因为我首先生成了可删除文件的列表,并在进行了一些计算后仅删除了其中的一部分。
该问题的答案也没有检查目录是否允许删除文件:In PHP, check if a file can be deleted-因此,即使经过这么多年,看来这个简单的问题尚未得到回答。
答案 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()检查文件。