Se vuoi un array che mantenga il formato del tree di directory:
Codice PHP:
function read_dir_tree($folder) {
    
$output = array();
    foreach ( 
scandir($folder) as $item ) {
        if ( 
$item == '.' OR $item == '..' )
            continue;
        
$full_path "$folder/$item";
        if ( 
is_dir($full_path) ) {
            
$output[$item] = read_dir_tree($full_path);
        } else {
            
$output[] = $full_path;
        }
    }
    return 
$output;

se invece vuoi la semplice lista "piatta" di tutti i file:
Codice PHP:
function read_dir_plain($folder) {
    
$output = array();
    foreach ( 
scandir($folder) as $item ) {
        if ( 
$item == '.' OR $item == '..' )
            continue;
        
$full_path "$folder/$item";
        if ( 
is_dir($full_path) ) {
            
$output array_merge($outputread_dir_plain($full_path));
        } else {
            
$output[] = $full_path;
        }
    }
    return 
$output;