Io generalment euso questo script. Spero vi torni utile:

Codice PHP:
// legge cartelle e sottocartelle e restituisce tutto gerarchizzato sottoforma di array
function recursive_dir_reader($dir, &$array
{
    if (
$handle opendir($dir)) 
    {
        while (
false !== ($file readdir($handle))) 
        {
            if (
$file != "." && $file != ".."
            {
                if(
is_dir($dir.'/'.$file)) 
                {
                    
$array[$file] = array();
                    
recursive_dir_reader$dir.'/'.$file, &$array[$file]);
                } 
                else 
                {
                    
$array[] = "[url='".$dir."/".$file."']".$file."[/url]";
                }
            }
        }
    
closedir($handle);
    }
}

$array = array();
$dir './';
recursive_dir_reader($dir, &$array);
echo 
"<pre>/n";
print_r($array);
echo 
"</pre>/n"