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 코드를 작성하세요!
'💻 자주 쓰는 PHP 함수' 카테고리의 다른 글
[PHP 함수] preg_match() 함수로 패턴 검사하기 (10) | 2025.03.26 |
---|---|
[PHP 함수] trim() 함수로 공백 제거하기 (4) | 2025.03.26 |
[PHP 함수] array_values() 함수로 배열 다루기 (14) | 2025.03.25 |
[PHP 함수] file_get_contents()로 웹 페이지 가져오기 (21) | 2025.03.24 |
[PHP 함수] file_put_contents() 함수 완벽 가이드 (20) | 2025.03.24 |