2012-09-17 48 views
5

tôi cần phải dịch lệnh cURL này vào mã PHP cURL:Dịch dòng lệnh cURL vào 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 

Tôi đã cố gắng này, nhưng nó dường như không làm việc:

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

lỗi tôi đang được nhận

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

Tuy nhiên nó hoạt động trong lệnh curl chuẩn

+0

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

+0

bạn gặp phải lỗi gì? –

+0

Sự cố chứng chỉ SSL, xác minh rằng chứng chỉ CA là OK. Chi tiết: lỗi: 14090086: SSL thói quen: SSL3_GET_SERVER_CERTIFICATE: xác minh chứng chỉ không thành công - ** tuy nhiên nó hoạt động trong lệnh curl tiêu chuẩn ** – loudislav

Trả lời

2

Bạn cần cung cấp curl với chuỗi chứng chỉ cho phép xác minh chứng chỉ SSL của Twitter là hợp lệ. Để thực hiện việc này, hãy tải xuống các chữ ký chứng chỉ cần thiết from here và lưu chúng vào một tệp đơn giản (tôi giả sử bạn đặt tên là cacert.pem).

Sau đó, trước khi đưa ra yêu cầu, thiết lập CURLOPT_CAINFO để trỏ đến tập tin này:

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

Nó cũng là một ý tưởng tốt để cho phép một cách rõ ràng xác minh chứng chỉ SSL thay vì dựa trên các thiết lập mặc định:

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

Bây giờ tôi nhận được lỗi này: _setting chứng nhận xác minh địa điểm: CAfile: cacert.pem CApath: none_ Tôi có thể làm gì làm gì với điều đó? – loudislav

+0

@loudislav: Hmm, có thể bạn cũng cần đặt 'CURLOPT_CAPATH' thành' .' (giả định tệp chứng chỉ trong thư mục hiện tại). Ngoài ra hãy chắc chắn rằng ba đường dẫn cho tệp cert là chính xác. – Jon

+0

Vâng, tôi đã giải quyết nó. Thanx! – loudislav