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

PHP 기본 튜토리얼

PHP 고급 튜토리얼

PHP & MySQL

PHP 참조 매뉴얼

PHP 파일(File)

이 튜토리얼에서는 PHP의 파일 시스템 함수를 사용하여 파일을 동적으로 생성하고, 접근(또는 읽기)하고, 조작하는 방법을 배울 것입니다.

PHP로 파일 처리

PHP는 서버 측 프로그래밍 언어이므로, 웹 서버에 저장된 파일과 디렉토리를 사용할 수 있게 합니다. 이 튜토리얼에서는 PHP 파일 시스템 함수를 사용하여 웹 서버에서 파일을 생성하고, 접근하고,操作할 수 있게 배울 것입니다.

PHP fopen() 함수로 파일 열기

파일을 사용하려면 먼저 파일을 열어야 합니다. PHP fopen() 함수는 파일을 열기 위해 사용됩니다. 이 함수의 기본 문법은 다음과 같은 방식으로 제공됩니다:

fopen(filename, mode)

fopen(filename, mode)에 전달하는 첫 번째 매개변수는 열고자 하는 파일의 이름을 지정하며, 두 번째 매개변수는 파일을 어떤 모드로 열어야 할지 지정합니다. 예를 들어:

<?php
$handle = fopen("data.txt", "r");
?>
테스트를 해보세요‹/›

아래와 같은 방법 중 하나로 파일을 열 수 있습니다:

모드그것이 무엇을 할 수 있는지
r읽기 만 파일을 열기
r+읽기와 쓰기로 파일을 열기
w쓰기 만 사용할 파일을 열고 파일 내용을 지우기. 파일이 존재하지 않으면 PHP가 파일을 생성하려고 시도합니다.
w+읽기와 쓰기로 파일을 열고 파일 내용을 지우기. 파일이 존재하지 않으면 PHP가 파일을 생성하려고 시도합니다.
a추가. 쓰기 만 사용할 파일을 열기. 파일의 마지막 부분에 쓰기를 통해 파일 내용을 유지합니다. 파일이 존재하지 않으면 PHP가 파일을 생성하려고 시도합니다.
a+읽기/추가. 파일을 읽기와 쓰기로 열기. 파일의 마지막 부분에 쓰기를 통해 파일 내용을 유지합니다. 파일이 존재하지 않으면 PHP가 파일을 생성하려고 시도합니다.
x쓰기 만 사용할 파일을 열기. 파일이 존재하면 False를 반환하고 오류를 생성합니다. 파일이 존재하지 않으면 PHP가 파일을 생성하려고 시도합니다.
x+읽기와 쓰기로 파일을 열기; 그렇지 않으면 'x'와 같은 행동을 합니다.

존재하지 않는 파일을 열려고 했을 때 PHP는 경고 메시지를 생성합니다. 따라서 이러한 오류 메시지를 피하기 위해 파일이나 디렉토리에 접근하기 전에 PHP file_exists() 함수를 사용하여 파일이나 디렉토리가 존재하는지 간단히 확인해야 합니다.

<?php
$file = "data.txt";
 
//파일이 존재하는지 확인합니다
if(file_exists($file)){
    // 이 파일을 열기 시도합니다
    $handle = fopen($file, "r");
} else {
    echo "ERROR: File does not exist.";
}
?>
테스트를 해보세요‹/›

힌트:파일과 디렉토리의操作은 오류가 쉽게 발생할 수 있습니다. 따라서 오류 검사의 어떤 형태를 구현하는 것이 좋습니다. 이렇게 하면 오류가 발생하면 스크립트가 예술적으로 오류를 처리할 수 있습니다. 관련 내용을 참조하세요PHP 오류 처리教程

PHP fclose() 함수를 사용하여 파일을 닫기

파일을 사용한 후에는 닫아야 합니다. fclose() 함수는 다음 예제와 같이 파일을 닫습니다:

<?php
$file = "data.txt";
 
//파일이 존재하는지 확인합니다
if(file_exists($file)){
    //읽을 파일을 엽니다
    $handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
        
    /* 이곳에는 실행해야 할 코드가 몇 가지 있습니다 */
        
    //파일 핸들을 닫습니다
    fclose($handle);
} else {
    echo "ERROR: File does not exist.";
}
?>
테스트를 해보세요‹/›

주의:PHP는 스크립트가 종료될 때 자동으로 모든 열린 파일을 닫지만, 모든 작업을 수행한 후 파일을 닫는 것이 좋습니다.

PHP fread() 함수를 사용하여 파일에서 읽기

이제 파일을 열고 닫는 방법을 이해했습니다. 다음 장에서 파일에서 데이터를 읽는 방법을 배우게 됩니다. PHP는 파일에서 데이터를 읽는 데 사용할 수 있는 몇 가지 함수가 있습니다. 한 번의 작업으로 전체 파일을 문자로 읽을 수 있습니다.

고정된 수의 문자를 읽습니다

fread() 함수는 파일에서 지정된 수의 문자를 읽을 수 있습니다. 이 함수의 기본 문법을 사용할 수 있습니다.

fread(file handle, length in bytes)

이 함수는 두 개의 매개변수를 받아들입니다-파일 핸들과 읽을 바이트 수입니다. 다음 예제는 "data.txt" 파일에서 읽습니다.2공백을 포함한 0개 바이트입니다. 예를 들어, "data.txt" 파일은 "The quick brown fox jumps over the lazy dog."라는 텍스트를 포함하고 있습니다.

<?php
$file = "data.txt";
 
//파일이 존재하는지 확인합니다
if(file_exists($file)){
    //읽을 파일을 엽니다
    $handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
        
    //파일에서 고정된 바이트 수를 읽습니다
    $content = fread($handle, "20);
        
    //파일 핸들을 닫습니다
    fclose($handle);
        
    //파일 내용을 표시합니다
    echo $content;
} else {
    echo "ERROR: File does not exist.";
}
?>
테스트를 해보세요‹/›

위의 예제는 다음과 같은 출력을 생성합니다:

The quick brown fox

파일 전체 내용을 읽습니다

fread() 함수는 filesize() 함수와 함께 사용될 수 있습니다. fread() 함수는 파일의 전체 내용을 한 번에 읽습니다. filesize() 함수는 파일의 크기를 바이트 단위로 반환합니다.

<?php
$file = "data.txt";
 
//파일이 존재하는지 확인합니다
if(file_exists($file)){
    //읽을 파일을 엽니다
    $handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
        
    //전체 파일을 읽습니다
    $content = fread($handle, filesize($file));
        
    //파일 핸들을 닫습니다
    fclose($handle);
        
    //파일 내용을 표시합니다
    echo $content;
} else {
    echo "ERROR: File does not exist.";
}
?>
테스트를 해보세요‹/›

위의 예제는 다음과 같은 출력을 생성합니다:

The quick brown fox jumps over the lazy dog.

PHP에서 파일 전체 내용을 읽는 가장 간단한 방법은 readfile() 함수를 사용하는 것입니다. 이 함수는 파일을 열지 않고도 파일 내용을 읽을 수 있게 합니다. 다음 예제는 위의 예제와 같은 출력을 생성합니다:

<?php
$file = "data.txt";
 
//파일이 존재하는지 확인합니다
if(file_exists($file)){
    //전체 파일을 읽고 출력합니다
    readfile($file) or die("ERROR: Cannot open the file.");
} else {
    echo "ERROR: File does not exist.";
}
?>
테스트를 해보세요‹/›

위의 예제는 다음과 같은 출력을 생성합니다:

The quick brown fox jumps over the lazy dog.

파일 전체 내용을 읽어들이지 않고도 파일을 읽을 수 있는 또 다른 방법은 file_get_contents() 함수를 사용하는 것입니다. 이 함수는 파일 이름과 경로를 받아들여, 전체 파일을 문자열 변수에 읽어들입니다. 다음은 예제입니다:

<?php
$file = "data.txt";
 
//파일이 존재하는지 확인합니다
if(file_exists($file)){
    // 전체 파일을 문자열로 읽어들입니다
    $content = file_get_contents($file) or die("ERROR: Cannot open the file.");
        
    //파일 내용을 표시합니다
    echo $content;
} else {
    echo "ERROR: File does not exist.";
}
?>
테스트를 해보세요‹/›

파일 전체 데이터를 읽어들이는 또 다른 방법은 PHP의 file() 함수입니다. 이 함수의 기능은 file_get_content() 함수와 유사하지만, 파일 내용을 단일 문자열로 대신하여 행 배열로 반환합니다. 반환된 배열의 각 요소는 파일의 한 행에 해당합니다.

파일 데이터를 처리하려면 사용해야 합니다foreach 루프배열을 순회합니다. 이 예제는 파일을 배열에 읽어들이고, 그 다음 루프를 사용하여 표시하는 예제입니다:

<?php
$file = "data.txt";
 
//파일이 존재하는지 확인합니다
if(file_exists($file)){
    //전체 파일을 배열에 읽어들이기
    $arr = file($file) or die("ERROR: Cannot open the file.");
    foreach($arr as $line){
        echo $line;
    }
} else {
    echo "ERROR: File does not exist.";
}
?>
테스트를 해보세요‹/›

PHP fwrite() 함수로 파일에 쓰기

또한 PHP fwrite() 함수를 사용하여 데이터를 파일에 쓰거나 기존 파일에 추가할 수 있습니다. 이 함수의 기본 문법은 다음과 같이 제공됩니다:

fwrite(file handle, string)

fwrite() 함수는 두 개의 매개변수를 받아들입니다—파일 핸들과 쓰일 데이터 문자열, 다음 예제와 같이:

<?php
$file = "note.txt";
    
//쓰려는 데이터 문자열
$data = "The quick brown fox jumps over the lazy dog.";
    
//파일을 쓰기 위해 열기
$handle = fopen($file, "w") or die("ERROR: Cannot open the file.");
    
//데이터를 파일에 쓰기
fwrite($handle, $data) or die ("ERROR: Cannot write the file.");
    
//파일 핸들을 닫습니다
fclose($handle);
    
echo "데이터가 성공적으로 파일에 쓰였습니다.";
?>

위의 예제에서 "note.txt" 파일이 존재하지 않으면 PHP는 자동으로 파일을 생성하여 데이터를 쓰게 됩니다. 그러나 "note.txt" 파일이 이미 존재하면 PHP는 새 데이터를 쓰기 전에 파일의 내용을 지우게 됩니다(만약 있으면), 하지만 파일에 추가하고 기존 내용을 유지하고 싶다면 위의 예제를 사용하세요모드 a 대신 w.

또 다른方法是 file_put_contents() 함수를 사용합니다. 이는 file_get_contents() 함수의 대응 기능으로, 데이터를 파일에 쓰기 위해 파일을 열지 않아도 될 수 있는 간편한 방법을 제공합니다. 이 함수는 파일의 이름과 경로 그리고 파일에 쓰일 데이터를 받아들입니다. 다음은 예제입니다:

<?php
$file = "note.txt";
    
//쓰려는 데이터 문자열
$data = "The quick brown fox jumps over the lazy dog.";
    
//데이터를 파일에 쓰기
file_put_contents($file, $data) or die("ERROR: Cannot write the file.");
    
echo "데이터가 성공적으로 파일에 쓰였습니다.";
?>

file_put_contents() 함수에서 지정된 파일이 이미 존재하면, 기본적으로 PHP는 그 파일을 덮어쓰게 됩니다. 파일의 내용을 유지하고 싶다면 file_put_contents() 함수에 특수한 FILE_APPEND 래빗을 세 번째 매개변수로 전달할 수 있습니다. 이는 새 데이터를 파일에 추가하여 덮어쓰지 않습니다. 다음은 예제입니다:

<?php
$file = "note.txt";
    
//쓰려는 데이터 문자열
$data = "The quick brown fox jumps over the lazy dog.";
    
//데이터를 파일에 쓰기
file_put_contents($file, $data, FILE_APPEND) or die("ERROR: Cannot write the file.");
    
echo "데이터가 성공적으로 파일에 쓰였습니다.";
?>

PHP rename() 함수를 사용하여 파일을 이름을 바꾸기

PHP의 rename() 함수를 사용하여 파일이나 디렉토리를 이름을 바꿀 수 있습니다. 예를 들어 다음과 같이 사용할 수 있습니다:

<?php
$file = "file.txt";
 
//파일이 존재하는지 확인합니다
if(file_exists($file)){
    //이 파일을 이름을 바꾸기 시도합니다
    if(rename($file, "newfile.txt")){
        echo "파일 이름 변경이 성공적으로 완료되었습니다.";
    } else {
        echo "오류: 파일을 이름을 바꿀 수 없습니다.";
    }
} else {
    echo "오류: 파일이 존재하지 않습니다.";
}
?>

PHP unlink() 함수를 사용하여 파일을 지우기

PHP의 unlink() 함수를 사용하여 파일이나 디렉토리를 지울 수 있습니다. 예를 들어 다음과 같이 사용할 수 있습니다:

<?php
$file = "note.txt";
 
//파일이 존재하는지 확인합니다
if(file_exists($file)){
    //이 파일을 지우기 시도합니다
    if(unlink($file)){
        echo "파일이 성공적으로 지워졌습니다.";
    } else {
        echo "오류: 파일을 지울 수 없습니다.";
    }
} else {
    echo "오류: 파일이 존재하지 않습니다.";
}
?>

다음 장에서는 PHP에서디렉토리나 폴더의자세한 정보

PHP 파일 시스템 함수

아래 표는 다른 유용한 PHP 파일 시스템 함수를 요약하며, 이 함수들은 파일을 동적으로 읽고 쓰기에 사용할 수 있습니다.

기능
설명
fgetc()한 문자를 한 번에 읽습니다.
fgets()한 행을 한 번에 읽습니다.
fgetcsv()콤마로 구분된 값의 한 행을 읽습니다.
filetype()파일의 유형을 반환합니다.
feof()파일의 마지막에 도달했는지 확인합니다.
is_file()파일이 일반 파일인지 확인합니다.
is_dir()파일이 디렉토리인지 확인합니다.
is_executable()파일이 실행 가능한지 확인합니다.
realpath()규제된 절대 경로 이름을 반환합니다.
rmdir()비어 있는 디렉토리를 삭제합니다.

다른 유용한 PHP 파일 시스템 함수를 얻기 위해 PHP 파일 시스템 참조를 확인하십시오.