2016-08-31 2 views
0

Mit dem folgenden Code bekomme ich keine Art von Fehler oder Inhalt.Keine Fehlermeldung oder Inhalt von cURL

Ich interessiere mich für Inhalt meiner Website http://www.aptamitra.in.

$cookie = tempnam ("/tmp", "CURLCOOKIE"); 
$ch = curl_init(); 
//$timeout = 5; 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1"); 
curl_setopt($ch, CURLOPT_URL, "http://www.aptamitra.in"); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_ENCODING, ""); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); # required for https urls 
//curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
//curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
//curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 
$content = curl_exec($ch); 
$response = curl_getinfo($ch); 
var_dump($content); 
echo "<pre>"; 
print_r($response); // iam getting response here. 
curl_close ($ch); 

Das Array, das ich var_dump($content)print_r($response) erhalten unter Verwendung unter

 
bool(false) 

Array 
(
    [url] => http://www.aptamitra.in/ 
    [content_type] => text/html; charset=UTF-8 
    [http_code] => 302 
    [header_size] => 4956 
    [request_size] => 4984 
    [filetime] => -1 
    [ssl_verify_result] => 0 
    [redirect_count] => 20 
    [total_time] => 0.452 
    [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] => -1 
    [starttransfer_time] => 0.124 
    [redirect_time] => 0.328 
    [redirect_url] => 
    [primary_ip] => 127.0.0.1 
    [certinfo] => Array 
     (
     ) 

    [primary_port] => 1080 
    [local_ip] => 127.0.0.1 
    [local_port] => 52230 
) 

gezeigt Ich weiß nicht, warum es keinen Inhalt.

+1

Sie erhalten eine 302-Weiterleitung, daher kein Inhalt, aber Sie haben CURLOPT_FOLLOWLOCATION aktiviert, was dieser Weiterleitung folgen sollte. Rätselhaft! – jedifans

+0

@ Sherif, ja bekomme ich nicht Inhalt oder Fehlermeldung – EaB

+0

Echo curl_error ($ ch); Einfügen vor curl_exec(); und kenne den Fehler – JYoThI

Antwort

3

Per der curl_exec() Dokumentation:

Returns TRUE on success or FALSE on failure. However, if the CURLOPT_RETURNTRANSFER option is set, it will return the result on success, FALSE on failure.

Ihr Anruf zu var_dump($content); ist bool(false) zeigt, was bedeutet, curl_exec() ausfällt. Aus diesem Grund erhalten Sie keinen Antwortinhalt. Verwenden Sie curl_errno() und/oder curl_error() um herauszufinden, warum es fehlschlägt.

Eine Sache, die ich bemerke, ist curl_getinfo() meldet [redirect_count] => 20. Das ist ein Los Redirects. Der Server wird wahrscheinlich in einer endlosen Umleitungsschleife stecken bleiben und curl_exec() beschließt, nach einer Weile zu versagen. Siehe CURLOPT_MAXREDIRS. Überprüfen Sie, ob die Fehlernummer, die gemeldet wird, CURLE_TOO_MANY_REDIRECTS ist.

+0

@RemyLebeu, der Fehler ist Curl Fehler: Maximale (20) Weiterleitungen folgten – EaB

+0

@ user5405873 nun, da gehst du dann. Jetzt müssen Sie jede URL finden, auf die der Server umleitet, und sicherstellen, dass curl korrekt umleitet.Dies ist entweder ein Server-Fehler, der immer wieder zur selben URL umleitet, selbst wenn curl dies anfordert, oder wahrscheinlicher, dass curl nicht etwas sendet, was der Server erwartet, so dass er Weiterleitungen verwendet, um zu versuchen, es zu erzwingen. –

+0

, was Sie sagen, ist 100% richtig. Es ist ein Serverfehler, was soll ich jetzt tun. – EaB

0

Hoffnung das funktioniert

$options = array(
    CURLOPT_CUSTOMREQUEST =>"GET",  //set request type post or get 
    CURLOPT_POST   =>false,  //set to GET 
    CURLOPT_USERAGENT  => 'Mozilla/5.0 (Windows NT 6.1; rv:48.0) Gecko/20100101 Firefox/48.0', //set user agent 
    CURLOPT_RETURNTRANSFER => true,  // return web page 
    CURLOPT_HEADER   => false, // don't return headers 
    CURLOPT_FOLLOWLOCATION => true,  // follow redirects 
    CURLOPT_ENCODING  => "",  // handle all encodings 
    CURLOPT_AUTOREFERER => true,  // set referer on redirect 
    CURLOPT_CONNECTTIMEOUT => 120,  // timeout on connect 
    CURLOPT_TIMEOUT  => 120,  // timeout on response 
    CURLOPT_MAXREDIRS  => 10,  // stop after 10 redirects 
); 

$ch  = curl_init("http://www.aptamitra.in/"); 
curl_setopt_array($ch, $options);  
echo curl_exec($ch);  
curl_close($ch); 
+0

IAM bekommen die gleiche Antwort wie oben Code (mein Code), nichts wurde geändert – EaB

1

die mit folgenden ich in der Lage war, den Seiteninhalt OK zu drucken.

function mmcurl($url=NULL, $data=array(), $options=NULL){ 

    /* Download cacert.pem and change path here to suit */ 
    $cacert='c:/wwwroot/cacert.pem'; 
    $cookiejar=tempnam(sys_get_temp_dir(), '_cookiejar_');      


    $curl=curl_init(); 
    if(parse_url($url,PHP_URL_SCHEME)=='https'){ 
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); 
     curl_setopt($curl, CURLOPT_CAINFO, realpath($cacert)); 
    } 
    curl_setopt($curl, CURLOPT_URL,trim($url)); 
    curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); 
    curl_setopt($curl, CURLOPT_FRESH_CONNECT, TRUE); 
    curl_setopt($curl, CURLOPT_HEADER, FALSE); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0'); 
    curl_setopt($curl, CURLOPT_ENCODING, ''); 

    if($options->cookie){ 
     curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiejar); 
     curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiejar); 
     curl_setopt($curl, CURLOPT_COOKIE, $cookiejar); 
    } 
    if($options->post){ 
     curl_setopt($curl, CURLOPT_POST, true); 
     curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); 
    } 
    $res=(object)array(
     'response' => curl_exec($curl), 
     'info'  => curl_getinfo($curl), 
     'errors' => curl_error($curl), 
     'cookie' => $cookiejar 
    ); 
    curl_close($curl); 
    return $res; 
} 



$url='http://www.aptamitra.in'; 
$data=array(); 
$options=new StdClass; 
$options->post=false; 
$options->cookie=true; 


$res=mmcurl($url, $data, $options); 
echo '<pre>',print_r($res,true),'</pre>'; 
+0

Ihre Code-Ausgabe sieht aus (ich habe cacert.pem) diese – EaB

+0

? Der Code gibt den HTML-Code für die angegebene URL zurück - Sie könnten ihn in DOMDocument laden, wenn die weitere Verarbeitung relativ einfach ist – RamRaider

+0

, ja, Sie haben Recht 100% ist es ein Serverproblem. Wie kann ich es beheben, bitte hilf mir. – EaB

Verwandte Themen