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)
'하면 fopen()는'단지 더 정의없이 제공된 URL의'GET' 요청을 한정한다. CURL은 PHP의 보안 구성에 영향을받지 않으며 많은 사용자 정의가 가능합니다. 왜 cURL을 사용하지 않으시겠습니까? –
@AmalMurali : 그건 ... 분명히 사실이 아닙니다. 나는 네가 curl에서 더 멀리 갈 수 있다고 인정하지만, fopen은 네가 좋아하는 것을 모두 POST/PUT/DELETE 할 수있다. 'OP'는'stream_context'를 사용하여 그의 질문에서 어떻게 당신에게 힌트를줍니다. – Wrikken