2015-07-25 2 views
0

Поскольку Flickr API полностью поддерживает SSL, я сделал шаги следующиеCurl не удалось получить локальный сертификат выдавшей с Filckr API в PHP

  1. Скачать .pem файл из http://curl.haxx.se/ca/cacert.pem, переименовать его в curl-
    Са- bundle.crt и скопировать в C:/XAMPP/PHP/(Я использую XAMPP на Win8)

  2. Добавить cacert местоположение в мой код

    curl_setopt($ch, CURLOPT_CAINFO, "C:/xampp/php/curl-ca-bundle.crt"); 
    

Здесь все моя PHP код

<?php 

    $url = 'https://api.flickr.com/services/rest/ 
       ?method=flickr.people.findByUsername 
       &api_key=38f6b424cbcaeb07967dc7732ddb3f32 
       &username=Sami'; 
    $ca = 'C:/xampp/php/curl-ca-bundle.crt'; 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_CAINFO, $ca); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    $result = curl_exec($ch); 
    if (curl_errno($ch)) { 
     echo 'Curl error: ' . curl_error($ch); 
    } 
    curl_close($ch); 
    echo $result; 
    ?> 

А потом я получил

Curl error: SSL certificate problem: unable to get local issuer certificate 

Пожалуйста, дайте мне несколько предложений или другой способ решения проблемы локального сертификата на Flickr API.

ответ

0

Я хотел бы предложить, что вы включили несколько дополнительных параметров в вашем завитка вызова, как вы выборки из источника HTTPS - а именно: -

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); 

и, возможно, также UserAgent, как я нашел много вызовов API блокированы для не имеющих UserAgent

 curl_setopt($ch, CURLOPT_USERAGENT, 'flickr-curl-fetcher'); 

Кроме того, я заметил (после того, как правильно читать ваш пост), что cacert.pem должен быть переименован? Это не кажется правильным - я использую следующее, и это работает.

 curl_setopt($ch, CURLOPT_CAINFO, realpath('c:/wwwroot/cacert.pem')); 


     /* Full code that does return XML */ 


     $url = 'https://api.flickr.com/services/rest/?method=flickr.people.findByUsername&api_key=38f6b424cbcaeb07967dc7732ddb3f32&username=Sami'; 
     $ca = 'C:/xampp/php/cacert.pem'; 
     $ch = curl_init(); 

     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_setopt($ch, CURLOPT_CAINFO, realpath($ca)); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); 
     curl_setopt($ch, CURLOPT_USERAGENT, 'flickr-curl-fetcher'); 

     $result = curl_exec($ch); 
     if (curl_errno($ch)) { 
      echo 'Curl error: ' . curl_error($ch); 
     } 
     curl_close($ch); 
     print_r($result); 
+0

Вы имели в виду отключить SSL? – user3698126

+0

Нет, вам нужно использовать ssl, поскольку ресурс, который вы извлекаете с помощью curl, превышает https. – RamRaider

+0

Я получил, Обратите внимание: curl_setopt(): CURLOPT_SSL_VERIFYHOST больше не принимает значение 1, вместо этого используется значение 2 в C: \ xampp \ htdocs \ curl \ index.php в строке 21 – user3698126

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

  • Нет связанных вопросов^_^