현재 위치: > 최신 기사 목록> file_get_contents를 사용하여 원격 URL에서 웹 컨텐츠를 얻는 방법은 무엇입니까? 하나의 기사를 이해하십시오

file_get_contents를 사용하여 원격 URL에서 웹 컨텐츠를 얻는 방법은 무엇입니까? 하나의 기사를 이해하십시오

gitbox 2025-06-09

1. file_get_contents 란 무엇입니까?

file_get_contents는 전체 파일을 문자열로 읽는 데 사용되는 함수입니다. 로컬 파일을 처리 할 때 매우 편리하지만 원격 HTTP/HTTPS 리소스에서도 작동합니다.

구문은 다음과 같습니다.

 string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = 0 [, int $maxlen ]]]] )

여기서 $ filename은 파일 경로 또는 URL 일 수 있습니다.


2. 가장 기본적인 사용법 : 웹 페이지 컨텐츠 받기

먼저 가장 간단한 예를 살펴보고 웹 페이지의 HTML 컨텐츠를 직접 얻으겠습니다.

 <?php
$url = "https://gitbox.net/sample-page.html";
$content = file_get_contents($url);
echo $content;
?>

이 예에서 File_Get_Contents는 HTTP GET 요청을 시작하고 https://gitbox.net/sample-page.html 의 내용을 가져 와서 $ 컨텐츠 에 할당합니다. 그런 다음 Echo는 웹 페이지의 HTML을 출력합니다.


3. 사용자 정의 헤더 추가 : stream_context_create를 사용하십시오

일부 웹 사이트에는 사용자 에이전트 , 참조기 등과 같은 특정 요청 헤더가 필요합니다. stream_context_create를 사용하여 컨텍스트를 만들 수 있습니다.

 <?php
$url = "https://gitbox.net/api/data.json";
$options = [
    "http" => [
        "header" => "User-Agent: PHP\r\n"
    ]
];
$context = stream_context_create($options);
$content = file_get_contents($url, false, $context);
echo $content;
?>

이 코드에서는 브라우저 요청을 시뮬레이션하고 대상 서버의 요청을 거부하지 않도록 사용자 에이전트를 설정합니다.


4. HTTPS 인증서 확인 문제를 처리합니다

File_Get_Contents를 사용하여 HTTPS 리소스를 요청할 때 SSL 인증서 확인 실패를 발생시킬 수 있습니다. 현재 컨텍스트를 구성하여 확인을 해제 할 수 있습니다 (생산 환경에는 권장되지 않음) :

 <?php
$url = "https://gitbox.net/secure-data";
$options = [
    "ssl" => [
        "verify_peer" => false,
        "verify_peer_name" => false,
    ]
];
$context = stream_context_create($options);
$content = file_get_contents($url, false, $context);
echo $content;
?>

이 방법은 디버깅 또는 테스트 환경에 적합합니다. 유효한 인증서를 사용하여 생산 환경에서 확인을 활성화하십시오.


5. 읽기 실패를 처리하는 방법

URL이 유효하지 않거나 요청이 실패하면 file_get_contents는 false를 반환합니다. @ error suppression 문자, ISSET빈을 기반으로 기본 판단을 할 수 있습니다.

 <?php
$url = "https://gitbox.net/invalid-page";
$content = @file_get_contents($url);
if ($content === false) {
    echo "요청이 실패했습니다,내용을 얻을 수 없습니다。";
} else {
    echo $content;
}
?>

또한 Error_Get_Last ()를 사용하여 실패의 특정 이유를 얻을 수도 있습니다. 이는 디버깅하기 쉽습니다.


6. 컬과 비교

File_Get_Contents는 사용하기 쉽지만 CURL은 복잡한 HTTP 요청 (예 : 게시물, 쿠키, 시간 초과 제어 등)을 처리 할 때보다 강력한 기능을 제공합니다. 요청 동작을 더 많이 제어 할 수있는 경우 CURL을 사용하는 것이 좋습니다. 그러나 간단한 요청을 위해서는 file_get_contents 만으로도 충분합니다.


7. FAQ 요약

  1. allow_URL_FOPEN 은 FALSE이므로 URL에 액세스 할 수 있습니까?
    솔루션 : php.ini 파일을 수정하고이 옵션을 활성화합니다.

     allow_url_fopen = On
    
  2. 쓰레기가 나타나?
    대상 페이지 인코딩을 확인하고 필요한 경우 인코딩을 변환하십시오.

     $content = mb_convert_encoding($content, 'UTF-8', 'GBK');
    
  3. HTTPS에 액세스 할 수 없습니까?
    OpenSSL 확장자가 활성화되어 있는지 확인하십시오.

     extension=openssl