将cURL命令行转换为PHP cURL

时间:2012-09-17 13:02:11

标签: php curl

我需要将此cURL命令转换为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

我试过这个,但它似乎不起作用:

> $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证书问题,验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

然而它适用于标准curl命令

1 个答案:

答案 0 :(得分: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);