simplexml_load_file()
에 대한 호출에서 HTTP 응답 코드를 검색하려면 알고있는 유일한 방법은 PHP의 조금 알려진 $http_response_header
을 사용하는 것입니다. 이 변수는 HTTP 래퍼를 통해 HTTP 요청을 할 때마다 자동으로 각 응답 헤더가 포함 된 배열로 만들어집니다. 즉, 매번 당신이로 시작하는 URL로 simplexml_load_file()
또는 file_get_contents()
를 사용하여 "HTTP : //"는
당신은, 그러나, 귀하의 경우에 print_r()
등
같은
$xml = @simplexml_load_file($request_url);
print_r($http_response_header);
당신을 그 내용을 검사 할 수 있습니다 file_get_contents()
을 사용하여 XML을 개별적으로 검색하려는 경우 4xx 응답을 받았는지 테스트하고, 그렇지 않으면 본문을 simplexml_load_string()
으로 전달하십시오. 예를 들면 다음과 같습니다.
$response = @file_get_contents($request_url);
if (preg_match('#^HTTP/... 4..#', $http_response_header[0]))
{
// received a 4xx response
}
$xml = simplexml_load_string($response);
이 작업은 가능하지만 오류를 포착하고 스크립트가 더 많은 작업을 수행하는 것을 막을 수 있어야합니다. 여전히 기본 경고 메시지가 표시됩니다. 경고 : file_get_contents (http://domain.com) [function.file-get-contents] : 스트림 열기 실패 : HTTP 요청 실패! HTTP/1.0 403 Forbidden 잡기위한 이유는 몇 가지 요청을하고 있으며, 오류가 발생했을 때 오류를 잡아 내고 기본값 대신 사용자에게 경고를주고 싶습니다. – Scoobler
그런 다음 업데이트 된 스 니펫에 나와있는 것처럼 음소거 연산자 @를 사용합니다. http://docs.php.net/manual/en/language.operators.errorcontrol.php –