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 일 수 있습니다.
먼저 가장 간단한 예를 살펴보고 웹 페이지의 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을 출력합니다.
일부 웹 사이트에는 사용자 에이전트 , 참조기 등과 같은 특정 요청 헤더가 필요합니다. 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;
?>
이 코드에서는 브라우저 요청을 시뮬레이션하고 대상 서버의 요청을 거부하지 않도록 사용자 에이전트를 설정합니다.
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;
?>
이 방법은 디버깅 또는 테스트 환경에 적합합니다. 유효한 인증서를 사용하여 생산 환경에서 확인을 활성화하십시오.
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 ()를 사용하여 실패의 특정 이유를 얻을 수도 있습니다. 이는 디버깅하기 쉽습니다.
File_Get_Contents는 사용하기 쉽지만 CURL은 복잡한 HTTP 요청 (예 : 게시물, 쿠키, 시간 초과 제어 등)을 처리 할 때보다 강력한 기능을 제공합니다. 요청 동작을 더 많이 제어 할 수있는 경우 CURL을 사용하는 것이 좋습니다. 그러나 간단한 요청을 위해서는 file_get_contents 만으로도 충분합니다.
allow_URL_FOPEN 은 FALSE이므로 URL에 액세스 할 수 있습니까?
솔루션 : php.ini 파일을 수정하고이 옵션을 활성화합니다.
allow_url_fopen = On
쓰레기가 나타나?
대상 페이지 인코딩을 확인하고 필요한 경우 인코딩을 변환하십시오.
$content = mb_convert_encoding($content, 'UTF-8', 'GBK');
HTTPS에 액세스 할 수 없습니까?
OpenSSL 확장자가 활성화되어 있는지 확인하십시오.
extension=openssl
관련 태그:
file_get_contents URL