2016-05-21 6 views
1

Ich benutze curl mit der Riot API. Alles funktioniert gut auf meinem Live-Server, ist aber nicht lokal. Die Curl-Erweiterung ist in WampServer aktiviert und ich erhalte keine Fehlermeldungen, es ist nur eine leere Seite.cURL Anruf funktioniert nicht ohne sichtbare Fehler (WampServer 3)

Hier ist mein Code, auch wenn es nicht wirklich relevant ist.

<?php 
    $private_key = "XXX"; 
    function summoner_name($summoner, $server, $private_key) { 
     $summoner_encoded = rawurlencode($summoner); 
     $summoner_lower = strtolower($summoner_encoded); 
     $curl_url = 'https://' . $server . '.api.pvp.net/api/lol/' . $server . '/v1.4/summoner/by-name/' . $summoner . '?api_key='.$private_key; 
     $curl = curl_init($curl_url); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
     $result = curl_exec($curl); 
     curl_close($curl); 
     return $result; 
    } 

    function summoner_info_array_name($summoner) { 
     $summoner_lower = mb_strtolower($summoner, 'UTF-8'); 
     $summoner_nospaces = str_replace(' ', '', $summoner_lower); 
     return $summoner_nospaces; 
    } 

    $summoner = "Test"; 
    $server = "euw"; 
    $summoner_info = summoner_name($summoner, $server, $private_key); 
    $summoner_info_array = json_decode($summoner_info, true); 
    $summoner_info_array_name = summoner_info_array_name($summoner); 
    $summoner_id = $summoner_info_array[$summoner_info_array_name]['id']; 
    $summoner_name_display = $summoner_info_array[$summoner_info_array_name]['name']; 
    $summoner_icon = $summoner_info_array[$summoner_info_array_name]['profileIconId']; 
    echo '<img src="http://ddragon.leagueoflegends.com/cdn/6.9.1/img/profileicon/'.$summoner_icon.'.png" /><br/><hr>'.$summoner_name_display; 
?> 

Und hier ist meine phpinfo() für Curl-Erweiterung.
Vielen Dank im Voraus! enter image description here.

+0

Wie sieht 'var_dump ($ result);' in der Zeile vor 'return $ result;' aus? – Will

+0

"Ich: \ www \ riot_api_test \ test_local.php: 24: boolean false":/ – Quinox

+0

Danke, okay, jetzt ersetze das 'var_dump (...);' mit 'var_dump (curl_error ($ curl));' – Will

Antwort

2

So wird zuerst, wie @MaksimVolkob wies darauf hin, und wie wir in den Kommentaren diskutiert wurde, ist der erste Schritt, diese Fehler zu lösen ist zu sehen, was die Fehlermeldung tatsächlich ist. curl_error() wird Ihnen diese Informationen geben.

Insbesondere Sie bekommen eine SSL/TLS-Fehler:

SSL certificate problem: unable to get local issuer certificate' (length=63) 

Wenn Sie kümmern sich nicht um die Sicherheit (ich dies nicht für Produktionsanwendungen empfehlen, je.), Können Sie deaktivieren der SSL-Überprüfungsschritt, der versagt:

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 

den besseren Weg ist Ihre CA-Zertifikat Informationen zu beheben, indem CURLOPT_CAINFO Einstellung. This blog post erklärt das ziemlich gut.

Bearbeiten: Wie OP entdeckt, hat this question genauere Informationen über cURL, das richtige CA-Zertifikat zu erkennen.

+0

Vielen Dank für den Link und auch wenn ich nur bekomme Das Problem auf dem lokalen Server, ich möchte es auf die richtige Weise lösen. Atm, bekomme ich die folgende Fehlermeldung für "curl_setopt ($ curl, CURLOPT_CAINFO, getcwd()." /riot_api.cer ");" "I: \ www \ riot_api_test \ test_local.php: 32: string 'Fehler beim Einstellen des Zertifikats Orte überprüfen: CAfile: I: \ www \ riot_api_test/riot_api.cer CApath: keine' (length = 102)". Ich habe überprüft, ob mein Zertifikat tatsächlich an dieser Stelle ist und es ist in Ordnung. Sollte ich den Pfad mit dem CApath definieren? Ich werde es trotzdem versuchen! – Quinox

+1

Ich löste es schließlich und befolgte die Schritte wie in diesem Post beschrieben: [cURL Fehler 60: SSL-Zertifikat: lokales Ausstellerzertifikat nicht erhalten] (http://stackoverflow.com/questions/29822686/curl-error-60-ssl -certificate-unable-to-get-local-issuer-Zertifikat? rq = 1). Danke für die Hilfe ! – Quinox

+0

Super, kein Problem, froh zu helfen! – Will

2

Sie können immer die Funktionen curl_getinfo() und curl_error() aufrufen, um die Probleme bei der neuesten curl-Abfrage zu überprüfen.

So:

$result = curl_exec($curl); 
if ($result === false) { 
    echo "Something is wrong here!\n".var_export(curl_error($curl), true) 
     . "\nQuery:".var_export(curl_getinfo($curl), true); exit(); 
}