我使用此功能删除文件夹及其内容,此文件夹中没有子目录,只有文件。
$uploaddir = "DRIVE_LETTER/path/to/folder";
$dir_contents = scandir($uploaddir);
if(is_dir($uploaddir)) {
foreach($dir_contents as $content) {
unlink($uploaddir.'/'.$content);
rmdir($uploaddir);
}
}
当我运行脚本时出现警告,如下所示:
Warning: unlink(D:/path/2016-05-18/08/.) [function.unlink]: Permission denied in C:\htdocs\test.php on line 32
Warning: rmdir(D:/path/2016-05-18/08) [function.rmdir]: Directory not empty in C:\htdocs\test.php on line 33
Warning: unlink(D:/path/2016-05-18/08/..) [function.unlink]: Permission denied in C:\htdocs\test.php on line 32
Warning: rmdir(D:/path/2016-05-18/08) [function.rmdir]: Directory not empty in C:\htdocs\test.php on line 33
相反警告,目录和文件被删除,但是,有一种更有效的方法来删除文件夹和内容吗?
答案 0 :(得分:1)
您有文件权限问题阻止您unlink
文件和文件夹尝试使用chmod
更改文件权限,然后删除文件和文件夹
function chmod_r($path) {
$dir = new DirectoryIterator($path);
foreach ($dir as $item) {
chmod($item->getPathname(), 0644);
if ($item->isDir() && !$item->isDot()) {
chmod_r($item->getPathname());
}
}
chmod($path, 0644);
}
chmod_r('files');
$files = glob('files/*'); // get all file names
foreach($files as $file){ // iterate files
if(is_file($file))
unlink($file); // delete file
}
rmdir("files");
这是一个更改要删除的文件权限的示例。
在这里有一个包含php脚本的文件夹和一个包含文件名的文件夹,包含没有删除权限的文件。首先将文件和文件夹的更改权限更改为0644 //为所有者读取和写入,为其他人读取然后删除文件。
答案 1 :(得分:0)
试一试: -
$uploaddir = "DRIVE_LETTER/path/to/folder";
$dir_contents = scandir($uploaddir);
$filename = 'Filename.jpg'; // Your file name
if(is_dir($uploaddir)) {
foreach($dir_contents as $content) {
unlink("DRIVE_LETTER/path/to/folder".$filename);
rmdir($uploaddir);
}
}
答案 2 :(得分:0)
function rrmdir($dir) {
foreach(glob($dir . '/*') as $file) {
if(is_dir($file)) rrmdir($file); else unlink($file);
} rmdir($dir);
}
rrmdir("E:/testing")