💻 자주 쓰는 PHP 함수

[PHP 함수] file_exists() 함수를 사용하여 파일과 디렉토리 존재 여부 확인하기

rhandy 2025. 3. 14. 14:05
728x90

웹 개발을 하다 보면 파일 또는 디렉토리가 존재하는지 확인해야 하는 경우가 많습니다.
PHP에서는 이를 확인하기 위해 file_exists() 함수를 제공합니다.

이 글에서는 PHP의 file_exists() 함수를 활용하여 파일과 디렉토리 존재 여부를 확인하는 방법을 자세히 설명하고,
이 함수를 활용할 수 있는 다양한 유용한 사용 사례도 함께 소개하겠습니다. 


1. file_exists() 함수란?

file_exists() 함수는 지정된 파일 또는 디렉토리가 존재하는지 확인하는 PHP 내장 함수입니다.
이 함수는 파일과 디렉토리 모두 확인할 수 있기 때문에 매우 유용합니다.

기본 문법

bool file_exists(string $path)
  • 반환값
    • 파일 또는 디렉토리가 존재하면 true 반환
    • 존재하지 않으면 false 반환
  • 매개변수 ($path)
    • 확인할 파일 또는 디렉토리 경로

2. file_exists()를 사용한 기본 예제

🔹 파일 존재 여부 확인

다음 예제는 특정 파일이 존재하는지 확인하는 코드입니다.

<?php
$file = "example.txt";

if (file_exists($file)) {
    echo "파일 '$file' 이 존재합니다.";
} else {
    echo "파일 '$file' 이 존재하지 않습니다.";
}
?>

🔹 디렉토리 존재 여부 확인

file_exists() 함수는 디렉토리 존재 여부도 확인할 수 있습니다.

<?php
$directory = "uploads";

if (file_exists($directory)) {
    echo "디렉토리 '$directory' 가 존재합니다.";
} else {
    echo "디렉토리 '$directory' 가 존재하지 않습니다.";
}
?>

 

 

[PHP 함수] is_file() 함수로 파일 확인하기

PHP에서 파일을 다룰 때, 특정 경로가 정상적인 파일인지 확인해야 하는 경우가 많습니다.예를 들어, 파일이 존재하는지 검사하거나, 업로드된 파일이 실제 파일인지 확인하는 작업을 수행할 때

rhandykim.tistory.com

3. file_exists()를 활용한 실용적인 사용 사례

단순히 파일이나 디렉토리가 존재하는지 확인하는 것뿐만 아니라, 다양한 활용 방법이 있습니다.


🔹 1) 파일이 없으면 자동으로 생성하기

파일이 존재하지 않으면 새 파일을 자동으로 생성할 수 있습니다.

<?php
$file = "data.txt";

if (!file_exists($file)) {
    file_put_contents($file, "이 파일은 자동으로 생성되었습니다.");
    echo "파일 '$file' 을 새로 생성했습니다.";
} else {
    echo "파일 '$file' 이 이미 존재합니다.";
}
?>

📌 활용 예:

  • 설정 파일(config 파일) 자동 생성
  • 로그 파일(log file) 자동 생성

🔹 2) 디렉토리가 없으면 자동으로 생성하기

디렉토리가 존재하지 않으면 mkdir() 함수를 사용하여 생성할 수 있습니다.

<?php
$directory = "uploads";

if (!file_exists($directory)) {
    mkdir($directory, 0777, true); // 디렉토리 생성 (0777 = 모든 권한 부여)
    echo "디렉토리 '$directory' 를 새로 생성했습니다.";
} else {
    echo "디렉토리 '$directory' 가 이미 존재합니다.";
}
?>

📌 활용 예:

  • 업로드 폴더가 없을 경우 자동 생성
  • 캐시 디렉토리 자동 생성

🔹 3) 이미지가 있으면 출력하고, 없으면 기본 이미지 표시

웹사이트에서 사용자의 프로필 사진을 보여줄 때,
만약 사용자가 프로필 사진을 업로드하지 않았다면 기본 이미지를 표시할 수 있습니다.

<?php
$profile_image = "uploads/user123.jpg";
$default_image = "uploads/default.jpg";

$image_to_display = file_exists($profile_image) ? $profile_image : $default_image;

echo "<img src='$image_to_display' alt='프로필 사진'>";
?>

📌 활용 예:

  • 프로필 사진, 상품 이미지 등에서 기본 이미지 처리

🔹 4) 파일 다운로드 기능에서 파일 존재 여부 확인

파일 다운로드 기능을 구현할 때, 파일이 존재하는지 먼저 확인해야 합니다.

<?php
$file = "downloads/sample.pdf";

if (file_exists($file)) {
    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename="' . basename($file) . '"');
    readfile($file);
} else {
    echo "요청한 파일을 찾을 수 없습니다.";
}
?>

📌 활용 예:

  • 사용자 파일 다운로드 기능 구현

🔹 5) 캐시 파일 확인 후 데이터 로딩 최적화

동적인 웹 페이지에서 캐시 파일이 존재하면 그것을 사용하고,
없으면 새로운 데이터를 생성하여 캐시 파일로 저장하는 방식으로 최적화할 수 있습니다.

<?php
$cache_file = "cache/homepage.html";

if (file_exists($cache_file)) {
    echo file_get_contents($cache_file);
} else {
    // 캐시 파일이 없으면 새로 생성
    ob_start(); // 출력 버퍼 시작
    echo "<h1>동적으로 생성된 페이지</h1>";
    $content = ob_get_clean(); // 버퍼 출력 저장
    file_put_contents($cache_file, $content);
    echo $content;
}
?>

📌 활용 예:

  • 페이지 로딩 속도 최적화 (캐싱)
  • API 응답 결과 저장 후 빠르게 제공

4. file_exists() 사용 시 주의할 점

is_file()과 is_dir()을 함께 사용하면 더 정확한 판별 가능

  • file_exists()는 파일과 디렉토리 모두 확인할 수 있기 때문에, 특정 유형을 구별하려면 is_file() 또는 is_dir()을 사용해야 합니다.
<?php
$path = "example.txt";

if (file_exists($path)) {
    if (is_file($path)) {
        echo "'$path' 는 파일입니다.";
    } elseif (is_dir($path)) {
        echo "'$path' 는 디렉토리입니다.";
    }
} else {
    echo "'$path' 가 존재하지 않습니다.";
}
?>

파일과 디렉토리 경로에 절대 경로 사용 권장
상대 경로(./uploads/image.jpg)보다는 절대 경로(/var/www/html/uploads/image.jpg)를 사용하는 것이 더욱 안정적입니다.

파일이 존재하지만 읽기 권한이 없을 수도 있음
file_exists()가 true를 반환해도 읽기 권한이 없을 수도 있습니다. 이럴 때는 is_readable()을 함께 사용하면 좋습니다.

if (file_exists($file) && is_readable($file)) {
    echo "파일을 읽을 수 있습니다.";
} else {
    echo "파일이 존재하지 않거나 읽을 수 없습니다.";
}

 


5. 결론

PHP의 file_exists() 함수는 파일 및 디렉토리의 존재 여부를 확인하는 데 필수적인 함수입니다.
이를 활용하면 파일 자동 생성, 다운로드 기능, 이미지 처리, 캐시 시스템 구축 등 다양한 기능을 구현할 수 있습니다.

파일이 없으면 생성
디렉토리가 없으면 자동으로 만들기
이미지가 없으면 기본 이미지 제공
파일 다운로드 시 존재 여부 확인
캐시 시스템을 활용한 성능 최적화

이제 file_exists()를 활용하여 더욱 안정적인 PHP 애플리케이션을 개발해보세요! 🚀

 

 

728x90