2011-10-03 140 views
0

嘗試使用cURL和PHP獲取某個URL的內容。 該代碼應該在sourceforge.net項目虛擬主機服務器上運行。PHP + cURL無法正常工作

代碼:

<?php 

function get_data($url) 
{ 
    $ch = curl_init(); 
    $timeout = 10; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 

$url1 = urlencode("http://www.google.com"); 
$url2 = "http://www.google.com"; 
$output = get_data($url2); 
echo $output; 

?> 

我檢查了捲曲的支持。但上面的代碼不工作,頁面正在加載直到超時沒有輸出。我也嘗試了編碼的網址。爲什麼?

錯誤503 Service Unavailable。 PHP版本5.3.2

+0

什麼版本的PHP? – Ikke

+0

你有什麼錯誤?它可能來自您的Internet連接。 – Mob

回答

4

我用你的代替我的捲髮代碼,它不工作。我嘗試使用'gmail.com',它顯示我的代碼很好,並且與您的代碼一起發出'301 Moved'錯誤。

我的代碼如下:

function get_web_page($url) 
{ 
     //echo "curl:url<pre>".$url."</pre><BR>"; 
    $options = array(
     CURLOPT_RETURNTRANSFER => true,  // return web page 
     CURLOPT_HEADER   => false, // don't return headers 
     CURLOPT_FOLLOWLOCATION => true,  // follow redirects 
     CURLOPT_ENCODING  => "",  // handle all encodings 
     CURLOPT_USERAGENT  => "spider", // who am i 
     CURLOPT_AUTOREFERER => true,  // set referer on redirect 
     CURLOPT_CONNECTTIMEOUT => 15,  // timeout on connect 
     CURLOPT_TIMEOUT  => 15,  // timeout on response 
     CURLOPT_MAXREDIRS  => 10,  // stop after 10 redirects 

    ); 

    $ch  = curl_init($url); 
    curl_setopt_array($ch, $options); 
    $content = curl_exec($ch); 
    $err  = curl_errno($ch); 
    $errmsg = curl_error($ch); 
    $header = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL); 
    curl_close($ch); 

    $header['errno'] = $err; 
    $header['errmsg'] = $errmsg; 

    //change errmsg here to errno 
    if ($errmsg) 
    { 
     echo "CURL:".$errmsg."<BR>"; 
    } 
    return $content; 
} 
+0

您的代碼適用於簡單的html網站,但不適用於Google和Gmail!他們只是樣本網站,我想要做的是獲得一個PHP文件的輸出! – yolo

+0

我在使用cUrl時也注意到的一件事情是,當URL從http重定向到https時,它的工作方式不同。你需要確保你的代碼可以處理這個問題 – denil

5

您可能需要使用的file_get_contents

$content = file_get_contents('http://www.google.com'); 
/some code here if needed/ 
return $content; 

你可以在裏面的file_get_contents前還設置文件:關於

$content = file_get_contents('textfile.txt'); 

更多信息功能file_get_conents

一些信息,我的捲曲度工作時發現:

一件事,捲曲工作時,我也注意到的是,它的工作方式不同,當URL有HTTP或HTTPS。您需要確保您的代碼可以處理此問題