본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP file_get_contents — 파일 내용을 한 번에 읽기 완전 정리

by 왕진 2026. 6. 16.
반응형

 

 

Web Development · PHP file_get_contents

PHP file_get_contents —
파일 내용을 통째로 한 문자열로 읽기

is_readable로 안전 검사 후 읽기
시작 오늘 분석할 코드
<?php $filename = "test.txt"; if(is_readable($filename)){ $contents = file_get_contents($filename); // 파일 전체 내용을 문자열로 가져옴 print $contents; }else{ print $filename."는 읽어 들일 수 없습니다."; } ?>

두 단계 — 먼저 is_readable로 파일이 존재하고 읽을 권한이 있는지 확인, 그 다음 file_get_contents로 한 번에 통째로 읽어들인다.

용어 용어 정리
file_get_contents()파일 내용을 문자열로 한 번에 반환
is_readable()파일이 존재하고 읽기 가능한지 확인
is_file()파일이 일반 파일인지
file_exists()파일·폴더 존재 여부
URL도 가능http(s):// 도 지원 (allow_url_fopen 설정)
반환값파일 내용 (성공) / false (실패)
대용량 주의파일 전체를 메모리로 → 큰 파일 X
반대file_put_contents — 쓰기

1 "한 번에" 읽는다는 뜻

옛날 방식은 fopen → fread → fclose로 단계가 많았다. file_get_contents는 이 모두를 한 줄로 처리한다.

// 옛 방식 $fp = fopen("test.txt", "r"); $content = fread($fp, filesize("test.txt")); fclose($fp); // 현대 방식 $content = file_get_contents("test.txt");

2 안전 검사 — is_readable
함수 검사 내용
file_exists($f) 존재 여부 (파일 또는 폴더)
is_file($f) 일반 파일인지 (폴더 X)
is_readable($f) 존재 + 읽기 권한
is_writable($f) 존재 + 쓰기 권한
filesize($f) 크기 (바이트)

3 URL도 읽을 수 있다
$json = file_get_contents("https://api.example.com/data"); $data = json_decode($json, true);

외부 API 호출도 가능. 단 php.iniallow_url_fopen 옵션이 켜져 있어야 한다 (대부분 기본 ON).

※ 실무에선 cURL이나 Guzzle 같은 라이브러리가 헤더·타임아웃·인증 처리에 더 적합. file_get_contents는 빠른 테스트용.

 

반응형

 

4 대용량 파일은 위험

file_get_contents는 파일을 메모리에 통째로 로드한다. 1GB짜리 파일을 읽으면 1GB 메모리를 쓴다.

// 큰 파일은 줄 단위로 읽기 $fp = fopen("big.log", "r"); while (($line = fgets($fp)) !== false) { // 한 줄씩 처리 } fclose($fp); // 또는 SplFileObject foreach (new SplFileObject("big.log") as $line) { // 한 줄씩 }

5 자주 하는 실수
실수 증상 해결
존재 검사 없이 바로 호출 경고 + false 반환 is_readable 먼저
상대 경로 의존 실행 위치에 따라 못 찾음 __DIR__ . "/test.txt"
대용량 파일 로드 메모리 폭발 fgets 또는 SplFileObject
인코딩 미고려 EUC-KR 파일이 깨져 보임 mb_convert_encoding 활용
반환 false 무시 이후 코드에서 오류 === false 검사

핵심 한 줄 요약

file_get_contents()파일 전체를 한 문자열로 읽기
is_readable()존재 + 권한 검사 (안전)
URL 가능http(s)://도 지원 (allow_url_fopen)
대용량 X메모리 통째 사용 → 큰 파일은 fgets
반환값문자열 / 실패 시 false
__DIR__상대 경로 함정 회피
반대file_put_contents — 쓰기
반응형

댓글