2014-02-15 6 views
3

fopen 함수를 경고 404 표시 한 후 $http_response_header 변수를 올바르게 채우지 만 잘못된 핸들을 반환합니다.PHP에서 fopen을 사용하여 404 페이지 콘텐츠를 가져올 수 있습니까?

$opts = array(
    'http'=>array(
    'method'=>"GET", 
    'header'=>"Accept-language: en\r\n" 
) 
); 
$context = stream_context_create($opts); 
$old_eh = set_error_handler (function() {}); 
$url = "https://wikimediafoundation.org/nonexisting"; 
$handle = fopen($url, 'r', false, $context); 
var_dump($http_response_header); 
var_dump($handle); 

그러나 브라우저에서이 페이지를 열어이 내용이 있음을 보여줍니다. 내가 여기서 컬을 사용해야 할까?

어쩌면이 동작을 변경하려면 $ 컨텍스트 변수에 몇 가지 옵션을 넣어야합니까?

결과 :

array(15) { 
    [0]=> string(22) "HTTP/1.1 404 Not Found" 
    [1]=> string(20) "Server: nginx/1.1.19" 
    [2]=> string(35) "Date: Sat, 15 Feb 2014 16:23:41 GMT" 
    [3]=> string(38) "Content-Type: text/html; charset=utf-8" 
    [4]=> string(20) "Content-Length: 2858" 
    [5]=> string(17) "Connection: close" 
    [6]=> string(40) "X-Powered-By: PHP/5.3.10-1ubuntu3.9+wmf1" 
    [7]=> string(48) "Cache-Control: s-maxage=2678400, max-age=2678400" 
    [8]=> string(78) "X-Wikimedia-Debug: prot=https:// serv=wikimediafoundation.org loc=/nonexisting" 
    [9]=> string(64) "Refresh: 5; url=https://wikimediafoundation.org/wiki/nonexisting" 
    [10]=> string(33) "X-Varnish: 2541084702, 3538479758" 
    [11]=> string(29) "Via: 1.1 varnish, 1.1 varnish" 
    [12]=> string(20) "Accept-Ranges: bytes" 
    [13]=> string(6) "Age: 0" 
    [14]=> string(50) "X-Cache: cp1068 miss (0), cp1068 frontend miss (0)" 
} 
bool(false) 
+0

'하면 fopen()는'단지 더 정의없이 제공된 URL의'GET' 요청을 한정한다. CURL은 PHP의 보안 구성에 영향을받지 않으며 많은 사용자 정의가 가능합니다. 왜 cURL을 사용하지 않으시겠습니까? –

+0

@AmalMurali : 그건 ... 분명히 사실이 아닙니다. 나는 네가 curl에서 더 멀리 갈 수 있다고 인정하지만, fopen은 네가 좋아하는 것을 모두 POST/PUT/DELETE 할 수있다. 'OP'는'stream_context'를 사용하여 그의 질문에서 어떻게 당신에게 힌트를줍니다. – Wrikken

답변

4

as per the manualtrueignore_errors을 설정

$opts = array(
    'http' => array(
     'method' => "GET", 
     'header' => "Accept-language: en\r\n", 
     'ignore_errors' => true 
) 
); 
관련 문제