php 입문 | 텍스트 파일 이용 | fputs를 사용하여 파일 저장


그럼 이제 파일을 저장해 보자. 이것은 “fputs"라는 함수를 사용한다. 다음과 같은 형태로 호출한다.

fputs (파일 포인터, 데이터);

단지 이것만으로 파일에 데이터를 저장할 수 있다. 파일로 쓰기를 할 때에 주의해야 할 점은 액세스 모드이다. 쓰기 액세스 모드는 2종류이기 때문에 실수하지 말길 바란다.

‘w’를 지정한 경우는 “덮어 쓰기 모드"이다. 이미 파일이 있을 경우, 이를 지우고 새로운 파일을 만들어 fputs에 쓴다.

‘a’를 지정한 경우는 “추가 쓰기 모드"이다. 이미 파일이 있다면, 그 파일의 마지막에 fputs한 내용을 추가한다. 즉, fputs으로 점점 데이터를 추가하는 것이다.

용도에 따라, 이 두가지 모드를 구사할 수 있도록 하자. 그럼 아래에 간단한 예제를 보도록 하자.

<?php
    // 데이터 추가
    if ($_POST != null){
        $f = @fopen("data.txt",'a') or exit("파일을 읽을 수 없습니다.");
        if ($f != null){
            $s = $_POST['text1'];
            fputs($f,$s . "\n");
            fclose($f);
        }
    }
    // 파일 읽기
    $f2 = @fopen("data.txt",'r') or exit("파일을 읽을 수 없습니다.");
    $result = '';
    $i = 1;
    while(!feof($f2)){
        $s2 = htmlspecialchars(fgets($f2));
        if ($s2 != ""){
            $result = $i++ . ": " .$s2 . "<br>" . $result;
        }
    }
    fclose($f2);
?>
<!DOCTYPE html>
<html lang="ko">
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
        <title>sample page</title>
    </head>
    <body>
        <h1>Hello PHP!</h1>
        <form method="post" action="./index.php">
            <input type="text" name="text1">
            <input type="submit">
        </form>
        <hr>
        <p><?php echo $result; ?></p>
    </body>
</html>

이것은 간단한 메모를 쓸 수 있는 어플리케이션이다. 입력 필드에서 텍스트를 써 보내면, 그 내용이 파일에 추가가 된다. 입력 양식의 아래에 저장된 메모가 새로운 것부터 순서대로 번호를 부여하여 표시된다.

여기에서는 “파일 저장”, “파일 가져 오기"를 모두 사용하고 있다. 어떻게 움직이고 있는지 각자 자세히 보도록 하자. 파일 액세스를 할 수 있게 되면 이런 식으로 좀 더 실용적인 것을 서서히 만들 수 있게 될 거다.

Linux 혹은 Mac OS 환경에서 파일 권한 오류
혹시 Linux 혹은 Mac OS에서 파일에 추가가 되지 않는다면 파일의 쓰기 권한이 있는지 확인 해보자. 만약에 없다면 아래와 같이 명령어로 쓰기 권한을 주면 된다.

$ chmod 666 data.txt 

파일 권한에 대한 자세한 내용은 리눅스 명령어에 대해 찾아보길 바란다.