2012-07-28 169 views
0

我收到以下错误: “警告:的file_get_contents未能打开流:HTTP请求失败,HTTP/1.0 400错误的请求!” 而打 “http://Google.com”PHP警告:file_get_contents无法打开流:HTTP请求失败! HTTP/1.0 400错误的请求

<?php 
     $content = file_get_contents("http://www.google.com"); 
     if (strpos($http_response_header[0], "200")) { 
     echo "SUCCESS"; 
     } 
     else { 
       echo "FAILED"; 
      } 
    ?> 

由于这个问题,我无法解析URL。我使用WAMP(Apache版本-2.2.22,PHP版本5.4.3)。

所采取的步骤: - 1.allow_url_fopen启用在php.ini 2.Tried编码的URL 3.Even用于卷曲PHP函数得到同样的问题。 4.Allowed防火墙上

请帮助。

+0

也许他们会阻止那些明显的非浏览器用户代理。毕竟你不应该使用curl或php来进行谷歌搜索。即使400状态码很奇怪,我希望在这种情况下有403。 – ThiefMaster 2012-07-28 11:17:37

+0

顺便说一句,谷歌的“根”URL应该读取'http:// www.google.com /',尾随斜线。但是,这不应该导致错误400. – tiwo 2012-07-28 11:23:14

回答

2

请求实际上成功了,您的页面在$ content中。但是你为成功做了错误的测试。 URL不返回200,但302

+0

我修改了代码,并使用302作为错误,但得到相同的结果“错误” – NS009 2012-07-28 11:35:45

+0

那么去转储特殊变量$ http_response_header并重新考虑你的测试。 – arkascha 2012-07-28 11:38:42

0

这是因为它返回状态302(实测值)

echo $http_response_header[0]; //返回 'HTTP/1.0 302实测值'

+0

Plz帮助如何解决这个问题, – NS009 2012-07-28 11:31:26

5
$html = @file_get_html($url); 
if($html==FALSE) { 
    echo 'error'; 
} else { 
    echo 'success'; 
} 

检查它这一个这里$ url是www.google.com.then你得到正确的结果

0

一些服务器配置不允许打开远程地址与file_get_contents(通过fopen)。 您可能想要更改配置,但他更喜欢打开远程站点的方式(更可靠以及快20倍)是使用cURL

一个快速和简单的例子可以在PHP文档here

0

我与你同样的问题被发现。 我在Windows 7上使用WAMP,直到最终找到解决方案。

你需要确保注释掉在php.ini文件扩展名= php_openssl.dll在

C:\ WAMP \ BIN \ PHP文件夹中。如果你通过WAMP服务器菜单设置PHP >> PHP Extention,它不会影响到php.exe

希望这对你也有效。

相关问题