2012-09-17 136 views
5

我需要這個cURL命令轉換成PHP代碼捲曲:捲曲的命令行翻譯成PHP捲曲

> 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 

我已經試過這一點,但它似乎不工作:

> $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); 

錯誤我得到

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

但它工作在標準curl命令

+0

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

+0

你得到什麼錯誤? –

+0

SSL證書問題,請驗證CA證書是否正常。詳細信息:錯誤:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:證書驗證失敗 - 但它在標準curl命令中工作** – loudislav

回答

2

您需要提供證書鏈的curl,以允許其驗證Twitter的SSL證書有效。爲此,請下載必要的證書籤名from here並將它們保存到純文件中(我假定您將其命名爲cacert.pem)。

然後,發出請求之前,設置CURLOPT_CAINFO指向此文件:

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

這也是一個好主意,明確允許的,而不是依賴於默認設置SSL證書驗證:

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

現在我收到此錯誤:_setting證書驗證位置:CAfile:cacert.pem CApath:none_我能這樣做? – loudislav

+0

@loudislav:嗯,也許你需要將'CURLOPT_CAPATH'設置爲'.'(假設當前目錄中有證書文件)。還要確保證書文件的路徑是正確的。 – Jon

+0

是的,我解決了它。感謝名單! – loudislav