Um mit dem FTP Adapter von Gaufrette rekursiv Dateien und Unterverzeichnisse zu löschen kann man folgenden Trick anwenden um nicht in die Fehlermeldung zu geraten:
ftp_rmdir(): Directory not empty.
1. erst alle Dateien löschen
2. dann die tiefsten Verzeichnisse bis hin zu den obersten löschen:
/**
* @param Filesystem $fileSystem
*/
function deleteAllFilesInDirectory(Filesystem $fileSystem)
{
// delete files first, than directories
foreach ($fileSystem->keys() as $key) {
if (!$fileSystem->isDirectory($key)) {
$fileSystem->delete($key);
}
}
$keys = $fileSystem->keys();
usort($keys, function (string $a, string $b){
$aCount = substr_count($a, '/');
$bCount = substr_count($b, '/');
return $bCount <=> $aCount;
});
foreach ($keys as $key) {
$fileSystem->delete($key);
}
}
