次のコードを検討してください。
public static function removeDir($src)
{
if (is_dir($src)) {
$dir = @opendir($src);
if ($dir === false)
return;
while(($file = readdir($dir)) !== false) {
if ($file != '.' && $file != '..') {
$path = $src . DIRECTORY_SEPARATOR . $file;
if (is_dir($path)) {
self::removeDir($path);
} else {
@unlink($path);
}
}
}
closedir($dir);
@rmdir($src);
}
}
これにより、ディレクトリが削除されます。しかし、いずれかのサブディレクトリで unlink が失敗したり、opendir が失敗した場合、ディレクトリには一部のコンテンツが残されます。
すべてを削除するか、何も削除しないでください。削除する前にディレクトリをコピーし、何かが失敗した場合はコピーを復元することを考えています。しかし、ファイルをロックするなど、もっと良い方法があるのではないでしょうか?