0

ディレクトリを再帰的に削除するために PHP を使用しています。この関数を呼び出す場合:

function deleteDir($dirPath) {

        $files = glob($dirPath . '*', GLOB_MARK);
        foreach ($files as $file) {
            if (is_dir($file)) {
                deleteDir($file);
            } else {
                unlink($file);
            }
        }
        rmdir($dirPath);
}

この行を使用して:

deleteDir("dir_to_be_deleted_recursively/");

ここでうまくいきません:

deleteDir($file);

(関数が削除しようとしているディレクトリ内のディレクトリを検出すると、関数は再度関数を呼び出しますが、そのディレクトリに対してです。)

これは私がテストしているディレクトリです:

dir_to_be_deleted_recursively/
   dir1/
      subdir1/
         file1.txt
      subdir2/
         file2.txt
      subdir3/
         file3.txt

注:エラーは表示されず、空白のページが表示されます。

4

1 に答える 1

0

私はすでに解決策を見つけました!

このコードを使用するだけで完全に機能します。

foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dirPath, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST) as $path) {
    $path->isFile() ? unlink($path->getPathname()) : rmdir($path->getPathname());
}
rmdir($dirPath);

ソース: PHP の再帰的なディレクトリ削除機能?

于 2013-10-27T12:26:42.697 に答える