ecco qui
	Codice PHP:
	
<?php
function list_elements($dir,$out) 
  {
  $file_list = '';
  $stack[] = $dir;
  while ($stack) 
    {
    $current_dir = array_pop($stack);
    if ($dh = opendir($current_dir)) 
      {
      while (($file = readdir($dh)) !== false) 
        {
        if ($file !== '.' AND $file !== '..') 
          {
          $current_file = "{$current_dir}/{$file}";
          if (is_file($current_file)) 
            {
            $file_list[] = "{$current_dir}/{$file}";
            } 
          elseif (is_dir($current_file)) 
            {
            $stack[] = $current_file;
            $dirs[]=$current_file; 
            }
          }
        }
      }
    }
  if ($out=='file') return $file_list;
  if ($out=='dir') return $dirs; 
  }
$dirs=list_elements("tua directory/subdir",'dir');
$files= list_elements("tua directory/subdir",'file');
?>
 
in pratica alla funzione passi 2 valori: 
1 - la cartella root da cui partire con la scansione
2 - che cosa vuoi ottenere come risultato (la lista dei files o le cartelle)
il tuto in un array 
attento solo che la funzione è ricorsiva, ovvero legge nella cartella, nelle casottocartelle ecc.. 

 