PHP cURL提供与本机cURL不同的结果

时间:2016-02-24 21:11:34

标签: php curl

当我本地运行以下cURL调用时,我得到了预期的结果。

curl -X POST -H "Accept:application/json" -H "Content-Type: application/x-www-form-urlencoded" "https://XXXX" -d 'grant_type=authorization_code&code=YYYY

当我通过PHP运行cURL调用时,我得到了不同的响应。

$curl = curl_init('https://XXXX');
curl_setopt_array($curl, array(
    CURLOPT_HTTPHEADER => array(
        'Accept: application/json',
        'Content-type: application/x-www-form-urlencoded'
    ),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => array(
        'grant_type' => 'authorization_code',
        'code' => 'YYYY'
    ),
));
$response = curl_exec($curl);
curl_close($curl);

本机调用和PHP方法之间是否存在功能差异?感谢。

1 个答案:

答案 0 :(得分:2)

问题是PHP的cURL不信任服务器的HTTPS证书。默认情况下,命令行curl不同。

快速解决方法是将cURL配置为始终信任服务器:

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

此处描述了正确的修复

http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/