Пытаясь провести локальное тестирование на виртуальном сервере, проблема в cURL возвращает http_code => 0
Я думаю, что это связано с моим именем виртуального хоста.
Имя виртуального хоста: dev.project
запрос cURL добавляет http: //
если я пинг: dev.project из командной строки, я получаю удар. Если я попробую с http: //dev.project, я получу неизвестный хост.
Есть ли опция curl_setopt только для использования имени хоста? Я не уверен, могу ли я использовать IP, поскольку на сервере есть несколько проектов, или Apache справится с этим?
Вот что я пробовал:
$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);
Ответ от curl_getinfo (): (ПРИМЕЧАНИЕ: http: // предварительно задан в URL-адресе)
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 )
Если у кого-то есть эта проблема, вот исправление:
// 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);