Dovresti anche discriminare i casi in cui $file sia uguale a . e ..
quelli lì ti fanno andare su e giù.
Io uso questa funzione per eliminare le cartelle, occhio che in caso ci sia qualcosa dentro la cartella che vuoi cancellare (file e/o sottocartelle), questo elimina tutto, quindi se tu vuoi cancellare solo cartelle vuote non va bene.
Codice PHP:
//presuppone che alla fine della directory passata non ci sia lo /
function delete_directory($dirname)
{
$dirname = trim($dirname);
if ($dirname != '')
{
if (is_dir($dirname))
{
$dir_handle = opendir($dirname);
}
else
{
return FALSE;
}
if ( ! $dir_handle )
{
return FALSE;
}
while($file = readdir($dir_handle))
{
if ($file != "." && $file != "..")
{
if (!is_dir($dirname.'/'.$file))
{
//è un file, lo cancello
if ( ! unlink($dirname.'/'.$file) )
{
return FALSE;
}
}
else
{
//è una sottocartella, ricorsione per eliminarla
if ( ! delete_directory($dirname.'/'.$file) )
{
return FALSE;
}
}
}
}
closedir($dir_handle);
if(rmdir($dirname))
{
return TRUE;
}
else
{
return FALSE;
}
}
else
{
return FALSE;
}
}