删除文件夹和文件的有效方法

时间:2016-05-18 05:31:01

标签: php

我使用此功能删除文件夹及其内容,此文件夹中没有子目录,只有文件。

  $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

相反警告,目录和文件被删除,但是,有一种更有效的方法来删除文件夹和内容吗?

3 个答案:

答案 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")