我们需要删除在linux文件系统中创建的图像。在路径/home/user/img/
(所有图像)
我们已尝试使用unlink()
,但删除它需要花费大量时间。
有人可以帮我们如何使用linux命令删除图像必须用PHP脚本传递。我认为rm
命令可以很快完成,但我很困惑如何使用
我们的剧本:
$locationIMG_p="/home/user/img/";
$location_p="/home/user/img/";
$opend=opendir($locationIMG_p);
while(false!==($rf=readdir($opend)))
{
unlink($locationIMG_p.$rf);
}
closedir($opend);
答案 0 :(得分:4)
也许尝试使用shell命令?
$cmd = "rm -f {$locationIMG_p}*";
exec($cmd);
但是在使用它时你必须非常小心;)
//编辑 您应该在路径中添加一些验证并使用escapeshellarg
// EDIT2
您也可以尝试使用DirectoryIterator,如下所示:
$di = new DirectoryIterator(path);
foreach($di as $file)
{
if( $file->isFile() )
{
unlink($file->getPathname());
}
}
答案 1 :(得分:1)
foreach(glob('/www/images/*.*') as $file)
if(is_file($file))
@unlink($file);
glob()
返回与通配符模式匹配的文件列表。
unlink()
删除给定的文件名(如果成功与否则返回)。
PHP函数名之前的@
强制PHP禁止函数错误。
通配符取决于您要删除的内容。 *.*
适用于所有文件,而*.jpg
适用于jpg文件。请注意,glob
也会返回目录,因此如果您有一个名为images.jpg
的目录,它也将返回它,从而导致unlink
失败,因为它只删除文件。
is_file()
确保您只尝试删除文件。
另请阅读this了解更多详情......