0

IP アドレスを介して Web ページのコンテンツを取得したいと考えています。この IP を共有する Web サイトは他にも多数あるため、HTTP Host ヘッダーを使用します。この PHP Web サーバーには DNS サービスがなく、

file_get_contents("http://allaboutcircuits.com");

php_network_getaddresses: getaddrinfo failed: Name or service not known 

いくつかの例から、私は試しました:

$context = stream_context_create(array('http' => array('header' => 'Host:allaboutcircuits.com')));
$url = 'http://68.233.243.63';
echo file_get_contents($url, 0, $context);

file_get_contents() の行でまだ同じエラーがあるようです。つまり、 file_get_contents()は、提供された IP アドレスにもかかわらず、ホスト ヘッダーの DNS を照会します。

このコードを修正するにはどうすればよいですか?

4

2 に答える 2

2

問題は、Web サイトが へのリダイレクトで応答しているwww.allaboutcircuits.comため、PHP がリダイレクトに従おうとすることです。Host ヘッダーを変更してwww.プレフィックスを含めると、機能するはずです。

于 2012-09-15T01:13:35.583 に答える
1
$s=socket_create(AF_INET,SOCK_STREAM,SOL_TCP); 
socket_connect($s,'68.233.243.63',80);
socket_send($s,"GET / HTTP/1.1\r\nHost: www.allaboutcircuits.com\r\n\r\n",1000,0);
socket_recv($s, $buf, 100000,0);
socket_close($s);
echo $buf;

開始する必要があります!

于 2012-09-15T01:13:26.663 に答える