2017-10-31 6 views
0

Also ich benutze PHP und Curl versucht, ein https weburl (von https://www.g2crowd.com) herunterladen, aber es funktioniert nicht, hier ist der Code Ich habe bisher eine einfache Curl und die andere fortgeschrittenere Curl, beide sind funktioniert nicht sadl. :(PHP Curl & HTTPS funktioniert nicht

// connect via SSL, but don't check cert 
$ch=curl_init('https://www.g2crowd.com'); 
curl_setopt ($ch, CURLOPT_CAINFO, "cacert.pem"); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 

$content = curl_exec($ch); 

echo $content; // show target page 
$ckfile = tempnam ("/tmp", 'cookiename'); 

$url='https://www.g2crowd.com/'; 
//$url='https://www.google.com'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); 

curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$headers = [ 
'Host: www.g2crowd.com', 
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0', 
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
'Accept-Language: en-US,en;q=0.5', 
'Accept-Encoding: gzip, deflate'  
]; 
curl_setopt($ch, CURLOPT_CAINFO, 'C:\Users\ivan\Downloads\cacert.pem'); 

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_REFERER, "https://www.g2crowd.com/users/c190d528-ab02-4cb5-8467-9362ceaec290"); 

curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

$server_output = curl_exec ($ch); 
if(curl_error($ch)) 
{ 
    echo curl_error($ch); 
} 
else { 
    echo 'eureka!'; 
} 

curl_close ($ch); 

Ich habe versucht, curl Fehler zu erfassen, so heren, was der Fehler ist:

1407742E: SSL-Routinen: SSL23_GET_SERVER_HELLO: TLSv1 Alarmprotokollversion

Bitte helfen Sie im wirklich mit meinem Latein am Ende!

danke !!

+2

Wo (und was) ist '$ I' Set? (Siehe Zeile 18.) – cHao

+0

Hey cHao guten Punkt! Das ist ein Debugging-Rest, als ich versuchte, verschiedene ssl-Protokolle zu durchlaufen, aber selbst dann, wenn ich es setze oder lösche diesen Parameter - es gibt immer noch einen Fehler zurück. –

Antwort

1

Ihr openssl Programm nicht mehr aktuell ist. ich habe dies auch auf der Version nativen OSX gesehen. Wenn Sie o Auf einem Mac müssen Sie eine andere openssl herunterladen. Oder wenn Sie SSL mit 0 öffnen, bedeutet das, dass Sie ohne SSL geöffnet haben.

+0

Forbes vielen Dank. Ich benutze Zend Studio 13 IDE PHP Debugger in Zend Studio, auf einem Windows 7 Rechner. Also ist das OpenSSL ein Programm, das ich auf Windows installieren oder php.ini oder etwas anderes ändern muss? Ich habe auch Wamp installiert, sollte ich versuchen, das Skript auf Wamp lokalen PHP-Server ausführen? –

0

Dieses Ihr Problem lösen sollte:

$url='https://www.g2crowd.com/'; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 

$server_output = curl_exec($ch); 

curl_close($ch); 

Wenn das nicht funktioniert, versuchen Sie:

$url='https://www.g2crowd.com/'; 
$server_output = file_get_contents($url); 
+0

Danke für Hilfe Ben! Es mag nur mein PHP-Debugger sein, aber es funktioniert nicht, ich nehme an, Sie haben es ausprobiert und es hat für Sie funktioniert? Lass es mich wissen, wenn du es getestet hast und es funktioniert hat. –

+0

@IvanSimic Das Problem ist fast sicher mit der Art, wie Sie PHP (oder zumindest seine SSL-Bibliotheken) eingerichtet haben. Aber das ist schwer aus der Ferne zu beheben. Im Allgemeinen heilt die Curl-Option, die ich gab, viele Übel. Versuchen Sie die zweite Option, die ich zur Verfügung gestellt habe. Es kann den Trick machen. –

+0

Gelöst habe ich es auf Wamp-Server versucht und habe diesmal einen anderen Curl-Fehler bekommen: "check ssl certificate" also googelt nach Lösung, versucht auf wamp server und es hat geklappt. Das Hinzufügen dieses Codes löste es: curl_setopt ($ ch, CURLOPT_CAINFO, 'C: \ Benutzer \ iwan \ Downloads \ cacert.pem'); –