💻 자주 쓰는 PHP 함수

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

rhandy 2025. 3. 25. 17:57
728x90

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

이러한 기능을 수행하는 대표적인 함수가 바로 is_file() 입니다.

이 글에서는 PHP is_file() 함수의 사용법, 다양한 활용 예제, file_exists() 및 is_dir()과의 차이점, 유용한 팁과 주의사항을 체계적으로 정리하겠습니다. 🚀


1. is_file() 함수란?

기본 문법

bool is_file(string $filename)

매개변수 설명

매개변수 설명

$filename 확인할 파일 경로

반환값

  • $filename이 존재하는 파일이면 true 반환
  • $filename이 없거나, 디렉토리이면 false 반환

2. is_file() 기본 예제

🔹 파일이 존재하는지 확인

<?php
if (is_file("example.txt")) {
    echo "✅ 파일이 존재합니다.";
} else {
    echo "❌ 파일이 존재하지 않습니다.";
}
?>

➡ example.txt가 존재하면 true, 없으면 false 반환.


🔹 디렉토리는 false 반환

<?php
if (is_file("uploads")) {
    echo "이것은 파일입니다.";
} else {
    echo "이것은 파일이 아닙니다.";
}
?>

➡ "uploads"가 폴더(디렉토리)라면 false 반환.


3. is_file()의 실용적인 활용 예제

🔹 1) 파일이 존재하면 내용 출력

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

if (is_file($file)) {
    echo file_get_contents($file);
} else {
    echo "파일이 없습니다.";
}
?>

파일이 있을 때만 읽도록 처리하여 오류 방지.


🔹 2) 업로드된 파일이 실제 파일인지 확인

<?php
$uploadedFile = "uploads/image.jpg";

if (is_file($uploadedFile)) {
    echo "파일이 정상적으로 업로드되었습니다.";
} else {
    echo "파일이 존재하지 않거나 손상되었습니다.";
}
?>

➡ 업로드된 파일이 정상적인 파일인지 확인할 수 있음.


🔹 3) 특정 확장자를 가진 파일만 처리

<?php
$file = "document.pdf";

if (is_file($file) && pathinfo($file, PATHINFO_EXTENSION) === "pdf") {
    echo "✅ PDF 파일이 확인되었습니다.";
} else {
    echo "❌ PDF 파일이 아닙니다.";
}
?>

➡ 특정 확장자(.pdf)를 가진 파일만 확인 가능.


🔹 4) 디렉토리 내 파일 목록 확인 후 is_file() 체크

<?php
$dir = "uploads";

if (is_dir($dir)) {
    $files = scandir($dir);
    
    foreach ($files as $file) {
        if ($file !== "." && $file !== ".." && is_file("$dir/$file")) {
            echo "파일: $file\n";
        }
    }
} else {
    echo "디렉토리가 존재하지 않습니다.";
}
?>

폴더 내 실제 파일 목록만 출력.


4. is_file() vs file_exists() vs is_dir() 차이점

함수 설명 디렉토리 검사 가능 여부

is_file() 경로가 파일인지 확인 ❌ (디렉토리는 false)
file_exists() 경로가 파일 또는 디렉토리인지 확인
is_dir() 경로가 디렉토리인지 확인

예제: is_file() vs file_exists() vs is_dir()

<?php
$path = "uploads";

var_dump(file_exists($path)); // 파일 또는 폴더가 있으면 true
var_dump(is_file($path)); // 파일일 때만 true
var_dump(is_dir($path)); // 디렉토리일 때만 true
?>

➡ "uploads"가 폴더일 경우:

  • file_exists("uploads") → true
  • is_file("uploads") → false
  • is_dir("uploads") → true

5. is_file() 사용 시 주의할 점

존재하지 않는 파일을 확인하면 false 반환

<?php
var_dump(is_file("nonexistent.txt")); // false
?>

➡ 파일이 없으면 false가 반환됨.

디렉토리는 false 반환

<?php
mkdir("testDir");
var_dump(is_file("testDir")); // false
rmdir("testDir");
?>

➡ is_file()은 디렉토리에서는 항상 false 반환.

심볼릭 링크 처리 (is_link()와 함께 사용)

<?php
if (is_link("symlink.txt")) {
    echo "이 파일은 심볼릭 링크입니다.";
} elseif (is_file("symlink.txt")) {
    echo "이 파일은 정상적인 파일입니다.";
}
?>

➡ 심볼릭 링크인지 확인하려면 is_link() 사용.

파일 권한 문제로 false 반환 가능

<?php
if (!is_file("/root/secret.txt")) {
    echo "파일을 찾을 수 없거나 접근 권한이 없습니다.";
}
?>

➡ 읽기 권한이 없으면 false가 반환될 수 있음.


6. is_file() 활용 팁

파일이 존재하면 읽기, 없으면 기본 데이터 생성

<?php
$file = "config.json";

if (!is_file($file)) {
    file_put_contents($file, json_encode(["theme" => "dark"]));
}
echo file_get_contents($file);
?>

➡ 파일이 없으면 기본 데이터를 생성한 후 읽기.

여러 파일 중 존재하는 첫 번째 파일 반환

<?php
$files = ["config.json", "settings.json", "default.json"];

foreach ($files as $file) {
    if (is_file($file)) {
        echo "사용할 설정 파일: $file";
        break;
    }
}
?>

➡ 여러 개의 파일 중 존재하는 첫 번째 파일을 찾을 때 유용.

파일 경로가 절대 경로인지 확인

<?php
$file = "/var/www/html/index.php";

if (is_file(realpath($file))) {
    echo "✅ 파일이 절대 경로에 존재합니다.";
}
?>

➡ realpath()를 사용하면 경로를 정확히 확인 가능.


7. 결론

PHP의 is_file() 함수는 파일이 실제로 존재하는지 확인하는 필수적인 함수입니다.
이를 활용하면 파일 유효성 검사, 업로드된 파일 확인, 특정 확장자 검사, 디렉토리 내 파일 목록 처리 등을 효율적으로 수행할 수 있습니다.

📌 핵심 요약
✔️ is_file()은 파일이 존재하고, 디렉토리가 아닐 때 true 반환
✔️ 폴더(디렉토리) 확인은 is_dir() 사용
✔️ 존재 여부만 확인하려면 file_exists() 사용
✔️ 심볼릭 링크 여부는 is_link()로 검사
✔️ 파일이 없거나 접근 권한이 없으면 false 반환

이제 is_file()을 활용하여 더욱 안전한 PHP 코드를 작성하세요! 

 

728x90