2012-09-17 14 views
5

मैं PHP cURL कोड में इस cURL आदेश अनुवाद करने की आवश्यकता:पीएचपी cURL में 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 

मैं इस की कोशिश की है, लेकिन यह काम करने के लिए प्रतीत नहीं होता:

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

हो रही है लेकिन यह मानक कर्ल आदेश में काम करता है

+0

फिर, अनुरोध करने से पहले, CURLOPT_CAINFO इस फ़ाइल को इंगित करने के लिए सेट http://php.net/manual/hi/book.curl.php –

+0

आपको क्या त्रुटि मिल रही है? –

+0

एसएसएल प्रमाणपत्र समस्या, सत्यापित करें कि सीए प्रमाणपत्र ठीक है। विवरण: त्रुटि: 140 9 0086: एसएसएल दिनचर्या: एसएसएल 3_GET_SERVER_CERTIFICATE: प्रमाण पत्र सत्यापित विफल - ** हालांकि यह मानक कर्ल कमांड ** – loudislav

उत्तर

2

आपको प्रमाणपत्र श्रृंखला के साथ कर्ल प्रदान करने की आवश्यकता है जो इसे ट्विटर के SSL प्रमाणपत्र को मान्य के रूप में सत्यापित करने की अनुमति देगा। ऐसा करने के लिए, अपेक्षित प्रमाणपत्र हस्ताक्षर from here डाउनलोड करें और उन्हें एक सादे फ़ाइल में सहेजें (मुझे लगता है कि आप इसे cacert.pem नाम दें)।

// 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

हाँ, मैंने इसे हल किया। Thanx! – loudislav