fsockopen返回服务器错误(0)

时间:2014-01-12 13:52:31

标签: php fsockopen

我正在使用以下代码检查Ubuntu服务器13.04中的fsockopen

<?php 
  $fp = fsockopen("www.google.com", 80, $errno, $errstr, 30); 
  if (!$fp) { 
      echo "$errstr ($errno)<br />\n"; 
  } else { 
      $out = "GET / HTTP/1.1\r\n"; 
      $out .= "Host: www.example.com\r\n"; 
      $out .= "Connection: Close\r\n\r\n"; 

      fwrite($fp, $out); 
      while (!feof($fp)) { 
          echo fgets($fp, 128); 
      } 
      fclose($fp); 
  } 
?>

并且服务器返回

php_network_getaddresses: getaddrinfo failed: System error (0)

对此有何帮助?

3 个答案:

答案 0 :(得分:2)

您的代码没有问题 - 它很好并且正常工作!

防火墙很可能阻止了80端口,这就是你无法连接的原因。

从控制台检查您的连接,看看你得到了什么:

ping google.com

编辑1:

您很可能在/etc/resolv.conf/etc/hosts中遇到问题。要解决此问题,您可以参考:Ping: Unknown host。如果你不能只发布那些文件的输出,我们就会看到我能做什么!

答案 1 :(得分:0)

当我尝试使用我的Ubuntu时,它可以工作:

<HTTP/1.1 302 Found
Location: http://www.google.com/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
X-Content-Type-Options: nosniff
Date: Sun, 12 Jan 2014 13:55:40 GMT
Server: sffe
Content-Length: 219
X-XSS-Protection: 1; mode=block
Alternate-Protocol: 80:quic
Connection: close

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

问题可能来自您的连接而不是您的代码。检查例如如果你在防火墙后面。

答案 2 :(得分:0)

这意味着您的脚本无法将主机名解析为IP地址。您的DNS配置可能存在问题。