Aşağıdaki kodlar işe yarayacaktır

function getDirContents($dir, $filter = '', &$results = array()) {
    $files = scandir($dir);

    foreach($files as $key => $value){
        $path = realpath($dir.DIRECTORY_SEPARATOR.$value); 

        if(!is_dir($path)) {
            if(empty($filter) || preg_match($filter, $path)) $results[] = $path;
        } elseif($value != "." && $value != "..") {
            getDirContents($path, $filter, $results);
        }
    }

    return $results;
}
Yukarıdaki kodda filtreleme de yapabilirsin.

getDirContents('/xampp/htdocs/WORK') klasörü ve altındaki her şeyi getirir.

getDirContents('/xampp/htdocs/WORK', '/\.php$/') php uzantılıları alırsın.

Aşağdaki kod daha modern bir yöntem

$rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('path/to/folder'));

$files = array(); 
foreach ($rii as $file) {
    if (!$file->isDir())
        $files[] = $file->getPathname();
}