2016-02-24 3 views
0

Когда я запускаю следующий вызов cURL, я получаю ожидаемый результат.PHP cURL дает другой результат, чем native 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 

Когда я запускаю вызов cURL через PHP, я получаю другой ответ.

$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

Проблема в том, что 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/

Смежные вопросы