2012-09-17 26 views
5

muszę tłumaczyć tego zawinięcia polecenia do kodu PHP cURL:Przekłada cURL wiersz polecenia w PHP cURL

> curl --get 'https://api.twitter.com/1/followers/ids.json' --data 
> 'cursor=-1&screen_name=somename' --header 'Authorization: OAuth 
> oauth_consumer_key="key", oauth_nonce="nonce", 
> oauth_signature="signature", oauth_signature_method="HMAC-SHA1", 
> oauth_timestamp="timestamp", oauth_token="token", oauth_version="1.0"' 
> --verbose 

próbowałem tego, ale nie wydaje się działać:

> $ch = curl_init(); 
> curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth oauth_consumer_key="key", oauth_nonce="nonce", oauth_signature="signature", oauth_signature_method="HMAC-SHA1", oauth_timestamp="timestamp", oauth_token="token", oauth_version="1.0"')); 
> curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); 
> curl_setopt($ch, CURLOPT_VERBOSE, 1); 
> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
> curl_setopt($ch, CURLOPT_HTTPGET, 1); 
> curl_setopt($ch, CURLOPT_URL, 'https://api.twitter.com/1/users/show.json?cursor=-1&screen_name=somename'); 
> $page = curl_exec($ch); 
> curl_close($ch); 

błąd Dostaję

SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

jednak działa w standardowej komendy curl

+0

http://php.net/manual/en/book.curl.php –

+0

o co chodzi w tym błędzie? –

+0

Problem z certyfikatem SSL, sprawdź, czy certyfikat CA jest OK. Szczegóły: błąd: 14090086: Procedury SSL: SSL3_GET_SERVER_CERTIFICATE: certyfikat nie powiódł się - ** działa jednak w standardowym poleceniu zwijania ** – loudislav

Odpowiedz

2

Należy podać curl z łańcuchem certyfikatów, który pozwoli mu zweryfikować certyfikat SSL Twitter jako ważny. Aby to zrobić, pobierz wymagane podpisy certyfikatów from here i zapisz je w zwykłym pliku (założę się, że nazywasz to cacert.pem).

Następnie, przed złożeniem wniosku, należy ustawić CURLOPT_CAINFO zwrócić się do tego pliku:

// assumes file in same directory as script 
curl_setopt($ch, CURLOPT_CAINFO, 'cacert.pem'); 

Jest to także dobry pomysł, aby wyraźnie umożliwić weryfikację certyfikatu SSL zamiast opierania się na ustawieniach domyślnych:

curl_setopt($ch, CURLOPT_VERIFYPEER, true); 
+0

Teraz pojawia się ten błąd: _setowanie certyfikatu sprawdza lokalizacje: CAfile: cacert.pem Ścieżka: brak_ Co mogę z tym zrobić? – loudislav

+0

@loudislav: Hmm, może musisz również ustawić 'CURLOPT_CAPATH' na' .' (zakładając plik certyfikatu w bieżącym katalogu). Potwierdź także potrójną pewność, że ścieżka do pliku cert jest poprawna. – Jon

+0

Tak, rozwiązałem to. Thanx! – loudislav