2016-05-10 2 views
2

Я пытаюсь очистить некоторую информацию с веб-сайта парового сообщества.CURL & PHP Web Scraping - cainfo

Я получаю сообщение об ошибке, связанную с сертификатом, когда пытаюсь получить доступ к URL через cURL.

  • Я скачал cacert.pem

  • модифицированный файл php.ini включить

    [curl] 
        ; A default value for the CURLOPT_CAINFO option. This is required to be an 
        ; absolute path. 
        curl.cainfo = "D:\xampp\php\caextract.pem.txt"] 
    

PHP File

$url = 'https://steamcommunity.com/search/?text=' . $PlayerName . '&x=0&y=0'; 

$ch = curl_init(); // Initialising cURL 
curl_setopt($ch, CURLOPT_URL, $url); // Setting cURL's URL option with the $url variable passed into the function 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE); // Setting cURL's option to return the webpage data 
$html = curl_exec($ch); // Executing the cURL request and assigning the returned data to the $data variable 

var_dump(curl_getinfo($ch)); 
var_dump(curl_errno($ch)); 
var_dump(curl_error($ch)); 
curl_close($ch); // Closing cURL 

установки:

  • XAMPP 3.2.2 (настройки по умолчанию)
  • для Windows 10
  • Chrome

Ошибка:

enter image description here

ответ

1

Я бы не слишком полагаться на такие настройки в php.ini, поскольку они могут быть перезаписаны b y: 1) php.ini на другом уровне; 2) .htaccess в любом родительском каталоге.

Единственный способ убедиться, что ваши настройки действительно вступили в силу, - это установить/запустить phpinfo() в том же каталоге, что и ваш скрипт.

Однако есть другой, более простой, способ: установить соответствующую опцию CURL по curl_setopt в сценарии:

... 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE); 
curl_setopt($ch, CURLOPT_CAINFO, "D:\xampp\php\caextract.pem.txt"); 
... 
+0

Я все еще получаю ту же ошибку: сертификат настройки ошибки проверить места: CAfile: D: MPP \ PHP \ cacert.pem.txt – Brian

+0

Тогда, скорее всего, проблема относится к вашему файлу сертификата. – hindmost

0

Нужно проверить сертификат SSL? Существует опция CURLOPT_SSL_VERIFYHOST, которую вы можете установить для cURL, чтобы не проверить ее.

В качестве альтернативы вы можете попробовать отправить запрос с http:// вместо этого в начале URL-адреса.

0

Поскольку вы только царапаете, вам действительно не нужно проверять сертификат ssl, потому что он только замедлит вас. Кроме того, вы нигде не регистрируетесь, мой совет должен был бы запретить CURL проверять SSL.

Все, что вам нужно сделать, это добавить:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);