Bug #67743 [Nab]: file_get_contents get some url file error
| From: | skadon at 163 dot com | Date: | Wed, 06 Aug 2014 01:06:59 +0000 |
| Subject: | Bug #67743 [Nab]: file_get_contents get some url file error | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-186994@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=67743&edit=1
ID: 67743
User updated by: skadon at 163 dot com
Reported by: skadon at 163 dot com
Summary: file_get_contents get some url file error
Status: Not a bug
Type: Bug
Package: Unknown/Other Function
Operating System: Win32
PHP Version: 5.4.31
Block user comment: N
Private report: N
New Comment:
my function get_url is use fsockopen, get the content of html is same to IE html code.a1.txt
it's OK.
function file_get_contents get content of html is error!
$url="http://shjianbang168.1688.com/";
$st=file_get_contents($url);
if ($st){
file_put_contents("./a.txt", $st);
echo "OK<br>";
}else{
echo "error<br>";
}
get_url($header, $st, "shjianbang168.1688.com", "/");
if ($st){
file_put_contents("./a2.txt", $st);
echo "OK2<br>";
}else{
echo "error2<br>";
}
print_r(dns_get_record("shjianbang168.1688.com"));
Array
(
[0] => Array
(
[host] => shjianbang168.1688.com
[class] => IN
[ttl] => 600
[type] => CNAME
[target] => cn.1688.com
)
)
print_r(get_headers("http://shjianbang168.1688.com/"));
Array
(
[0] => HTTP/1.1 302 Found
[1] => Date: Wed, 06 Aug 2014 00:58:21 GMT
[2] => Server: Apache
[3] => Location: http://127.0.0.1/
[4] => Vary: Accept-Encoding
[5] => Content-Length: 201
[6] => Connection: close
[7] => Content-Type: text/html; charset=iso-8859-1
[8] => HTTP/1.1 200 OK
[9] => Date: Wed, 06 Aug 2014 00:58:12 GMT
[10] => Server: Apache/2.2.25
[11] => X-Powered-By: PHP/5.4.31
[12] => Vary: Accept-Encoding
[13] => Connection: close
[14] => Content-Type: text/html
)
function get_url(&$header, &$content, $ahost, $url){
$header=""; $content="";
$fp = fsockopen($ahost, 80, $errno, $errstr, 30);
if ($fp) {
$out = "GET $url HTTP/1.1\r\n";
$out .= "Host: $ahost\r\n";
$out .= "Referer: http://$ahost/\r\n";
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2;)\r\n";
//$out .= "Accept-Encoding: gzip,deflate\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$content="";
while (!feof($fp)) {
$content.= fgets($fp);
}
fclose($fp);
$pos=stripos($content, "\r\n\r\n");
if ($pos>0){
$header=substr($content, 0, $pos);
$content=substr($content, $pos+4);
}
if (stripos($header, "Transfer-Encoding: chunked")!==false)
$content=http_chunked_decode($content);
return true;
} else {
$content=false;
return false;
}
}
Previous Comments:
------------------------------------------------------------------------
[2014-08-06 00:48:39] requinix@php.net
Not sure what I can tell you except that if PHP is sending you to 127.0.0.1 then that's because
something told it to.
As one more thing to check, see what you get with
print_r(dns_get_record("shjianbang168.1688.com"));
print_r(get_headers("http://shjianbang168.1688.com/"));
If that doesn't help then try a mailing list or online forum for more support.
http://php.net/support.php
------------------------------------------------------------------------
[2014-08-06 00:15:14] skadon at 163 dot com
use "Mozilla Firefox" or "Internet Explorer" view "http://shjianbang168.1688.com/" is ok,
but use file_get_contents("http://shjianbang168.1688.com/") is not same to
the Firefox or IE.
use PHP file_get_contents("http://shjianbang168.1688.com/") is same to
"Firefox view http://127.0.0.1/"(I have localhost
server, so i can test PHP script)
------------------------------------------------------------------------
[2014-08-06 00:04:24] skadon at 163 dot com
D:\Documents and Settings\Administrator>ping shjianbang168.1688.com
Pinging cn.split.1688.com [42.156.140.61] with 32 bytes of data:
Reply from 42.156.140.61: bytes=32 time=35ms TTL=54
Reply from 42.156.140.61: bytes=32 time=30ms TTL=54
Reply from 42.156.140.61: bytes=32 time=36ms TTL=54
Reply from 42.156.140.61: bytes=32 time=36ms TTL=54
Ping statistics for 42.156.140.61:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 30ms, Maximum = 36ms, Average = 34ms
------------------------------------------------------------------------
[2014-08-05 17:27:23] requinix@php.net
Then that's your problem: the domain name is resolving to 127.0.0.1. Fix that and it should
start working for you.
------------------------------------------------------------------------
[2014-08-05 15:41:23] skadon at 163 dot com
function file_get_contents Unable to resolve the domain name such as
"abc123.1688.com",it's resolve to 127.0.0.1
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=67743
--
Edit this bug report at https://bugs.php.net/bug.php?id=67743&edit=1