English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 기본 튜토리얼

PHP 고급 튜토리얼

PHP & MySQL

PHP 참조 매뉴얼

PHP 디렉토리 분석

이 튜토리얼에서는 PHP를 사용하여 디렉토리나 폴더를 처리하는 방법을 배울 것입니다.

PHP에서 디렉토리 사용

上一장에서 PHP를 사용하여 파일을 사용하는 방법을 배웠습니다. 마찬가지로 PHP는 파일 시스템의 디렉토리를 사용할 수도 있습니다. 예를 들어, 디렉토리를 열고 내용을 읽을 수 있으며, 디렉토리를 생성하거나 제거할 수 있으며, 디렉토리에 있는 모든 파일을 나열할 수 있는 기능도 있습니다.

새로운 디렉토리 생성

PHP mkdir()를 사용하여 생성할 디렉토리의 경로와 이름을 매개변수로 호출하여 새로운 비어 있는 디렉토리를 생성할 수 있습니다. 예를 들어:

<?php
//디렉토리 경로
$dir = "testdir"
 
// 디렉토리가 존재하는지 확인합니다
if(!file_exists($dir)){
    //디렉토리 생성을 시도합니다
    if(mkdir($dir)){
        echo "디렉토리 생성이 성공했습니다.";
    } else {
        echo "오류: 디렉토리를 생성할 수 없습니다.";
    }
} else {
    echo "오류: 디렉토리가 이미 존재합니다.";
}
?>

mkdir() 함수가 작동하려면 매개변수의 디렉토리 경로가 이미 존재하는 부모 디렉토리가 필요합니다. 예를 들어, 지정된 디렉토리 경로 testdir/subdir 보다 testdir 그렇지 않으면 PHP는 오류를 발생시킵니다.

파일을 하나의 위치에서 다른 위치로 복사합니다

PHP copy() 함수를 호출하여 파일의 소스 경로와 목표 경로를 매개변수로 파일을 하나의 위치에서 다른 위치로 복사할 수 있습니다. 목표 파일이 이미 존재하면 덮어쓰게 됩니다. 이는 백업 폴더에 "example.txt" 파일의 복사본을 생성하는 예제입니다.

<?php
//소스 파일 경로
$file = "example.txt";
 
//목표 파일 경로
$newfile = "backup"/example.txt";
 
// 파일이 존재하는지 확인합니다
if(file_exists($file)){
    //파일 복사를 시도합니다
    if(copy($file, $newfile)){
        echo "파일 복사가 성공했습니다.";
    } else {
        echo "오류: 파일 복사가 실패했습니다.";
    }
} else {
    echo "오류: 파일이 존재하지 않습니다.";
}
?>

이 예제가 유효하려면 이미 존재해야 합니다백업목표 디렉토리와 소스 파일 "example.txt". 그렇지 않으면 PHP는 오류를 발생시킵니다.

디렉토리 내의 모든 파일을 나열합니다

PHP scandir() 함수를 사용하여 지정된 경로 내의 파일과 디렉토리를 나열할 수 있습니다.

지금, 우리는 PHP 재귀를 사용하여 디렉토리 내의 모든 파일을 나열하는 기능을 만들어 보겠습니다. 깊이 있는 디렉토리 구조를 사용하는 경우 이 스크립트가 매우 유용할 것입니다.

<?php
//디렉토리 내의 파일을 출력하는 함수를 정의합니다
function outputFile($path){
    //디렉토리가 존재하는지 확인합니다
    if(file_exists($path) && is_dir($path)){
        //이 디렉토리 내의 파일을 스캔합니다
        $result = scandir($path);
        
        // 현재의(.)와 상위 디렉토리(..)를 필터링합니다
        $files = array_diff($result, array('.', '..'));
        
        if(count($files) > 0){
            //순회하여 재조정된 배열을 표시합니다
            foreach($files as $file){
                if(is_file("$path")/$file");
                    //파일 이름 표시
                    echo $file . "<br>";
                }) {/$file");
                    //디렉토리를 찾으면 해당 함수를 재귀적으로 호출합니다
                    outputFiles("$path",/$file");
                }
            }
        } else {
            echo "오류: 디렉토리에서 파일을 찾을 수 없습니다.";
        }
    } else {
        echo "오류: 해당 디렉토리가 존재하지 않습니다.";
    }
}
 
//함수 호출
outputFiles("mydir");
?>		

특정 유형의 모든 파일을 나열합니다

디렉토리와 파일 구조를 처리할 때, 때로는 특정 유형의 파일을 찾아야 할 수 있습니다. 예를 들어, .text 또는 .png 파일 등을 나열하려면 PHP glob() 함수를 사용할 수 있습니다. 이 함수는 패턴에 일치하는 파일을 찾습니다.

다음 예제의 PHP 코드는 documents 디렉토리를 나열하고 .text 확장자를 가진 모든 파일을 표시합니다. 하위 디렉토리는 검색되지 않습니다.

<?php
/* 디렉토리를 검색하고 순회하며 일치하는 파일을 포함한 배열을 반환합니다 */
foreach(glob("documents",/*.txt") as $file){
    echo basename($file) . "(size: " . filesize($file) . " bytes)" . "<br>";
}
?>

glob() 함수는 디렉토리나 그 하위 디렉토리 내의 모든 파일을 검색할 수 있습니다. 다음 예제에서 정의된 함수는 scandir() 함수와 같이 디렉토리 내의 모든 파일을 재귀적으로 나열합니다.

<?php
//디렉토리 내의 파일을 출력하는 함수 정의
function outputFile($path){
    //디렉토리가 존재하는지 확인합니다
    if(file_exists($path) && is_dir($path)){
        // 디렉토리 내의 파일을 검색합니다
        $files = glob($path ."/*);
        if(count($files) > 0){
            //재구성된 배열을 순회합니다
            foreach($files as $file){
                if(is_file("$file")){
                    //파일 이름만 표시
                    echo basename($file) . "<br>";
                } else if(is_dir("$file")){
                    //디렉토리를 찾으면 해당 함수를 재귀적으로 호출합니다
                    outputFiles("$file");
                }
            }
        } else {
            echo "오류: 디렉토리에서 해당 파일을 찾을 수 없습니다.";
        }
    } else {
        echo "오류: 해당 디렉토리가 존재하지 않습니다.";
    }
}
 
//함수 호출
outputFiles("mydir");
?>