2011-03-25 72 views
3

試圖做一個虛擬服務器上的一些本地測試本地開發的網絡問題,這個問題是捲曲返回HTTP_CODE => 0捲曲與虛擬主機命名

我認爲這是我的虛擬主機的命名做。

虛擬主機名稱:dev.project

捲曲請求添加的是http://

如果我平:在命令行dev.project,我得到一擊。 如果我用http://dev.project嘗試它,我會得到未知的主機。

是否有一個curl_setopt選項只是使用主機名?我不確定是否可以使用IP,因爲服務器上有幾個項目,或者Apache會處理這個問題?

這是我曾嘗試:從curl_getinfo()

$request_url = 'dev.project'; 
$request_args = 'parm=1234'; 
$user_agent = 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16'; 

$ch = curl_init(); 

// set curl options (GET)  
curl_setopt($ch, CURLOPT_URL, $request_url.'?'.$request_args); 
curl_setopt($ch, CURLOPT_HEADER, FALSE); 
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
//curl_setopt($ch, CURLOPT_FAILONERROR, TRUE); 
//curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
//curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
//curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // CHANGE THIS TO TRUE 

// Set curl options (POST) 
//curl_setopt($ch, CURLOPT_URL, $request_url); 
//curl_setopt($ch, CURLOPT_POST, TRUE); 
//curl_setopt($ch, CURLOPT_POSTFIELDS, $request_args); 
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
//curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
//curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
//curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 

$response = curl_exec($ch); 
echo "<pre>".print_r($response,true)."</pre><br />\n"; // nothing is returned 
print_r(curl_getinfo($ch)); 

curl_close($ch); 

響應:(注:HTTP://是預先計劃的網址)

Array 
(
    [url] => http://dev.project?parm=1234 
    [http_code] => 0 
    [header_size] => 0 
    [request_size] => 0 
    [filetime] => -1 
    [ssl_verify_result] => 0 
    [redirect_count] => 0 
    [total_time] => 0 
    [namelookup_time] => 0 
    [connect_time] => 0 
    [pretransfer_time] => 0 
    [size_upload] => 0 
    [size_download] => 0 
    [speed_download] => 0 
    [speed_upload] => 0 
    [download_content_length] => 0 
    [upload_content_length] => 0 
    [starttransfer_time] => 0 
    [redirect_time] => 0 
) 
+0

嗯這是如何脫離主題?爲什麼近距離投票? – 2011-03-25 19:32:25

+0

cURL僅適用於URL。協議前綴不是問題,除非你想要一個原始的TCP套接字連接。也許它不能解析主機名。它在'/ etc/hosts'中列出嗎?否則嘗試'.localnet'後綴(可能需要本地DNS或其他東西;我只是handwaving)。 – mario 2011-03-25 20:23:09

+0

找到了解決辦法,thnx – 2011-03-25 20:40:32

回答

8

如果任何人有這個問題,這裏是修復:

// This is your Virtual Hosts name 
$request_host = 'dev.project'; 

// This is the IP 
$request_url = '192.168.0.1'; 

$headers = array("Host: ".$request_host); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);  
curl_setopt($ch, CURLOPT_URL, $request_url.'?'.$request_args); 
curl_setopt($ch, CURLOPT_HEADER, FALSE);