PHP取消链接命令删除多个文件


PHP unlink command deleting multiple files

我在包含以下文件的目录(user-images/1/p/)上调用php unlink()函数:

1.jpg
1-s.jpg
1big.jpg
2.jpg
2-s.jpg
2big.jpg

实际调用本身如下:

unlink('user-images/1/p/1big.jpg');

它不只是删除1big.jpg,而是删除其中包含1的所有文件(1big.jpg1-s.jpg1.jpg)。我对此进行了大量研究,似乎找不到任何人发布类似的问题。

编辑:下面是完整的脚本,没有太多,没有看到任何东西会受到影响。我以前也从未见过这种情况:(

<?PHP
unlink('user-images/1/p/1.jpg');
unlink('user-images/1/p/1-s.jpg');
$uid = '1';
$fileName = '467';
$image = '/friskyfriends/user-images/1/p/1-big.jpg';
$width = 320;
$height = 320;
buildPics();
//buildPics($uid,$fileName,$image,$width,$height);
?>

我认为您正在寻找GLOB函数,它允许使用通配符进行删除。

示例

foreach (glob("*.jpg") as $filename) {
   echo "$filename size " . filesize($filename) . "'n";
   unlink($filename);
}

当运行只包含unlink代码的php文件时,它运行得很好。我追踪了我的include的其余部分(花了很长时间:(),并发现了以前编码中的一些问题。仍然不确定为什么会影响静态unlink()调用。也就是说,这是代码中其他地方的一个问题,已经得到解决。我感谢大家花时间和精力帮助我解决这个问题。。。

另一种方法和更明确的解决方案可能是使用路径

$search_text = "logfiles";
foreach(glob("/path/to/your/directory/$search_text*") as $filename)
{
    if(file_exists($filename)
    {
        echo "$filename size " . filesize($filename) . "'n";
        unlink($filename);
    }
    else
    {
         //no need to write because file already found with glob function
    }
}

请添加要删除的图像的取消链接函数。

unlink($image);