현재 위치: > 최신 기사 목록> file_get_contents 로컬 파일 내용을 읽는 방법? PHP 파일 읽기 방법에 대한 자세한 설명을 설명하십시오

file_get_contents 로컬 파일 내용을 읽는 방법? PHP 파일 읽기 방법에 대한 자세한 설명을 설명하십시오

gitbox 2025-09-21

PHP에서 로컬 파일의 내용을 읽는 것이 일반적인 작업입니다. file_get_contents () 는 파일의 내용을 문자열로 직접 읽을 수있는 매우 편리한 기능입니다. 이 기능은 로컬 파일을 읽을 수있을뿐만 아니라 네트워크 또는 원격 파일의 파일도 읽을 수 있습니다. 이 기사는 File_Get_Contents ()를 사용하여 로컬 파일 내용을 읽고 몇 가지 일반적인 용도와 예방 조치를 소개하는 방법을 자세히 설명합니다.

1. file_get_contents () 함수의 개요

file_get_contents ()는 파일의 내용을 읽고 파일의 내용을 문자열로 반환 할 수있는 PHP 내장 함수입니다. 함수의 기본 구문은 다음과 같습니다.

 <span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span> [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$flags</span></span><span> = </span><span><span class="hljs-number">0</span></span><span> [, resource </span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span> [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$offset</span></span><span> = -</span><span><span class="hljs-number">1</span></span><span> [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$maxlen</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span> ]]] )
</span></span>
  • $ filename : 읽을 파일 이름은 상대 또는 절대 경로를 지원합니다.

  • $ 플래그 : 일부 읽기 옵션을 설정하는 선택적 매개 변수 (예 : file_use_include_path 또는 file_binary 로 설정할 수 있음).

  • $ 컨텍스트 : 스트림의 컨텍스트를 지정하는 유효한 stream_context 리소스는 기본값이 null 입니다.

  • $ OFFSET : 파일의 시작 위치를 읽고 기본값은 -1 이며 파일의 시작 위치에서 읽습니다.

  • $ maxlen : 읽을 최대 바이트 수, 기본값은 null 이므로 전체 파일을 읽는 것을 의미합니다.

2. 기본 사용법

사용하는 가장 쉬운 방법은 파일 경로를 매개 변수로 직접 전달하는 것입니다. 예는 다음과 같습니다.

 <span><span><span class="hljs-variable">$file_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file_content</span></span><span>;
</span></span>

위의 코드는 example.txt 파일의 내용을 읽고 페이지에 출력합니다. 파일이 있으면 파일 내용이 문자열로 반환됩니다. 파일이 존재하지 않으면 함수가 False를 반환하고 가능한 오류를 처리해야합니다.

3. 파일이 존재하지 않는 상황을 처리합니다.

일반적으로 파일을 읽지 않은 후 오류를 피하기 위해 파일이 존재하는지 판단해야합니다. file_exists () 또는 is_file () 함수를 사용하여 파일이 존재하는지 확인할 수 있습니다.

 <span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'example.txt'</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>)) {
    </span><span><span class="hljs-variable">$file_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>);
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file_content</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'파일이 존재하지 않습니다'</span></span><span>;
}
</span></span>

또는 @ error suppressor를 사용하여 오류 메시지의 출력을 방지 할 수도 있습니다.

 <span><span><span class="hljs-variable">$file_content</span></span><span> = @</span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file_content</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'파일 읽기가 실패했습니다'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file_content</span></span><span>;
}
</span></span>

그러나 다른 오류를 숨길 수 있으므로 @를 너무 많이 사용하는 것이 좋습니다.

4. FILE_GET_CONTENTS ()를 사용하여 큰 파일을 읽으십시오

file_get_contents ()는 기본적으로 전체 파일을 읽습니다. 파일이 매우 크면 과도한 메모리 사용 및 프로그램 충돌이 발생할 수 있습니다. 파일의 일부만 읽거나 블록으로 파일을 읽으려면 $ 오프셋$ maxlen 매개 변수를 사용할 수 있습니다.

예를 들어, 파일의 시작부터 시작하는 100 바이트를 읽으십시오.

 <span><span><span class="hljs-variable">$file_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file_content</span></span><span>;
</span></span>

5. 파일 읽기의 컨텍스트를 설정하십시오

file_get_contents () 는 파일 읽기 컨텍스트 설정을 지원하므로 파일에 액세스하는 방법 (예 : 프록시 설정, 시간 초과 등)을 제어 할 수 있습니다. 컨텍스트를 설정 해야하는 경우 stream_context_create () 함수를 사용하여 컨텍스트 리소스를 생성 할 수 있습니다.

예 : 시간 초과 제한을 설정합니다

 <span><span><span class="hljs-variable">$options</span></span><span> = [
    </span><span><span class="hljs-string">'http'</span></span><span> =&gt; [
        </span><span><span class="hljs-string">'timeout'</span></span><span> =&gt; </span><span><span class="hljs-number">5</span></span><span> </span><span><span class="hljs-comment">// 시간 초과를 설정하십시오 5 두번째</span></span><span>
    ]
];

</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>(</span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-variable">$file_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-variable">$context</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file_content</span></span><span>;
</span></span>

6. file_get_contents ()를 사용하여 원격 파일을 읽으십시오

file_get_contents () 는 로컬 파일뿐만 아니라 원격 파일도 읽는 것을 지원합니다. URL 주소를 제공하면됩니다. 예를 들어 웹 페이지의 내용을 읽습니다.

 <span><span><span class="hljs-variable">$url</span></span><span> = </span><span><span class="hljs-string">'https://www.example.com'</span></span><span>;
</span><span><span class="hljs-variable">$html_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$url</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$html_content</span></span><span>;
</span></span>

원격 파일을 읽어야 할 때는 PHP 구성의 allow_url_fopen 옵션이 활성화되어 있는지 확인하십시오. 활성화되지 않으면 php.ini 구성 파일을 통해 활성화 할 수 있습니다.

7. 주목할만한 것들

  • 성능 문제 : 파일이 매우 큰 경우 file_get_contents ()를 사용하여 전체 파일을 한 번에 읽으면 과도한 메모리 사용이 발생할 수 있습니다. fopen () , fgets () 또는 fread () 함수를 사용하여 파일 컨텐츠를 행 또는 블록별로 읽는 것을 고려할 수 있습니다.

  • 오류 처리 : 파일 읽기가 실패하면 file_get_contents ()가 false를 반환합니다. 따라서 사용할 때는 예측할 수없는 오류를 피하기 위해 반환 값을 확인하십시오.

  • 파일 권한 : PHP 프로세스에 특히 부적절한 권한 설정으로 파일을 읽을 수있는 프로덕션 환경에서 읽을 파일에 충분한 권한이 있는지 확인하십시오.

8. 요약

file_get_contents ()는 작은 파일을 읽거나 파일의 전체 내용을 읽는 데 적합한 매우 간단한 파일 읽기 기능입니다. 큰 파일의 경우 메모리를 저장하기 위해 주문형 판독 값을 고려해야합니다. 컨텍스트를 설정하면 파일 읽기의 동작을 유연하게 제어하여 file_get_contents () 의 응용 프로그램 시나리오를 향상시킬 수 있습니다.

라인별로 읽기 또는 대형 파일을 처리하는 것과 같은 복잡한 파일 읽기 요구 사항이있는 경우 fopen () , fread () 또는 file () 과 같은 다른 파일 작동 함수를 사용하는 것을 고려할 수 있습니다.