33

rmdir()フォルダーにファイルが含まれている場合、関数は失敗します。次のような方法で、ディレクトリ内のすべてのファイルをループできます。

foreach (scandir($dir) as $item) {
    if ($item == '.' || $item == '..') continue;
    unlink($dir.DIRECTORY_SEPARATOR.$item);
}
rmdir($dir);

一気に消す方法ってありますか?

4

7 に答える 7

62

rrmdir()-- ディレクトリを再帰的に削除します。

function rrmdir($dir) { 
  foreach(glob($dir . '/*') as $file) { 
    if(is_dir($file)) rrmdir($file); else unlink($file); 
  } rmdir($dir); 
}
于 2012-11-21T10:15:10.347 に答える
47

まあ、いつもある

system('/bin/rm -rf ' . escapeshellarg($dir));

可能な場合。

于 2009-08-18T21:42:26.503 に答える
3
function delete_files($dir) {
  if (is_dir($dir)) {
    $objects = scandir($dir);
    foreach ($objects as $object) {
      if ($object != "." && $object != "..") {
        if (filetype($dir."/".$object) == "dir") 
           delete_files($dir."/".$object); 
        else unlink   ($dir."/".$object);
      }
    }
    reset($objects);
    rmdir($dir);
  }
 }
于 2015-01-21T10:08:26.610 に答える
2

この情報源によると;

ディレクトリをクリーンアップまたは削除してWindowsを使用している場合は、時間を節約してください。

これを使って:

    chdir ($file_system_path);
    exec ("del *.* /s /q");

他のDEL構文、または他のシェルutilを使用できます。これが私の現在の設定であり、これをテストするために変更しないため、サービスがデスクトップと対話することを許可する必要がある場合があります。

それ以外の場合は、ここで別の方法を見つけることができます

于 2009-08-18T21:51:33.957 に答える
1

これを試して :

exec('rm -rf'.$user_dir);
于 2013-01-02T11:22:35.680 に答える
0

lprent による php コメントにある安全で優れた機能の 1 つです。現在のディレクトリにあるシンボリック リンク ディレクトリのコンテンツを誤って削除するのを防ぎます。

public static function delTree($dir) { 
   $files = array_diff(scandir($dir), array('.','..')); 
    foreach ($files as $file) { 
      (is_dir("$dir/$file") && !is_link($dir)) ? delTree("$dir/$file") : unlink("$dir/$file"); 
    } 
    return rmdir($dir); 
  } 
于 2015-09-13T21:12:51.397 に答える