2012-07-28 168 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

希望這對你也有效。

相關問題