이번에 소개할 서포트 함수는 서버내 디렉토리를 조회하여 정보를 배열로 보여주는 함수이다. 자세한 사용방법은 array_dir_filelist 함수내 주석을 참고하면 된다. 생각해보니 작업하면서 사용할일이 거의 없기도 하지만 혹시나 필요할 경우 참고하여 사용하기 바란다. 

 

array_dir_filelist 함수

function array_dir_filelist($dir)
{
    if( $dir == false || is_dir($dir) == false){ return array(); }

    // 핸들 획득
    $handle  = opendir($dir);
    $files = array();
    $dirCount = array('file'=>0,'dir'=>0);

    // 디렉터리에 포함된 파일을 저장한다.
     $files[$dir] = array();
    while (false !== ($filename = readdir($handle))) {
        if($filename == "." || $filename == ".."){continue;}
        // 파일인 경우만 목록에 추가한다.
        if(is_file($dir . "/" . $filename)){
            $files[$filename] =  $dir."/".$filename;
            $dirCount['file'] ++;
        }else{
            $dirCount['dir'] ++;
            $sub = array_dir_filelist($dir . "/" . $filename);   
            $dirCount['file'] += $sub['dirCount']['file'];
            $dirCount['dir'] += $sub['dirCount']['dir'];
            $files[$filename] = $sub['files'];
        }
        ksort($files);
    }
    $files = array_filter($files);

    // 핸들 해제 
    closedir($handle);

    return array('files'=>$files, 'dirCount'=>$dirCount);	
}

 

예제

$dir = $_SERVER['DOCUMENT_ROOT']."/";
$array_dir_filelist = array_dir_filelist($dir);
echo '<pre>';
print_r($array_dir_filelist);
echo '</pre>';