ebakunin
ebakunin

Reputation: 3791

PHP cURL giving a different result than native cURL

When I run the following cURL call natively I get an expected result.

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

When I run the cURL call via PHP I get a different response.

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

Is there any functional difference between the native call and the PHP approach? Thanks.

Upvotes: 1

Views: 404

Answers (1)

Paolo
Paolo

Reputation: 15827

The problem is that PHP's cURL doesn't trust the server's HTTPS certificate. Differently command line curl by default does.

The quick fix is to configure cURL to always trust the server:

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

The proper fix is described here

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

Upvotes: 2

Related Questions