3
禁止404警告後,fopen函數正確填充$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);
但是,在瀏覽器中打開此頁面顯示有內容。我在這裏被迫使用Curl嗎?
也許我應該在$ context變量中加入一些選項來改變這種行爲?
結果:
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'中繼續_farther_,但是'fopen''''''''''''''''''''''''''''''''''''''''''''''''''''''。 'OP'甚至在他的問題中給你一個提示:用'stream_context'。 – Wrikken