ошибка 60 cURL: проблема с сертификатом SSL при отправке запроса на получение с помощью guzzle в laravel 5.4.36 - PullRequest
0 голосов
/ 05 сентября 2018

Я запускаю Laravel 5.4.36 через MAMP в Windows 7. Я пытаюсь отправить запрос на получение API, используя этот код, используя guzzle 6.0:

$client = new Client();

        $res = $client->request('GET', "https://api.behance.net/v2/projects? 
       q=motorcycle&client_id=hU0hcPkrtXxTi0PH1qUB5jztXI1R7iLB");

        $data = $res->getBody();
        $data = json_decode($data);
        $filteredData = [];

Когда я запустил это, я получил ошибку cURL 60: проблема с сертификатом SSL: не удалось получить сертификат локального эмитента (см. http://curl.haxx.se/libcurl/c/libcurl-errors.html),. Я просмотрел бесчисленные публикации stackoverflow и пробовал каждое решение, включая изменение curl.cainfo и opensll path. в файлах php.ini. Наконец, просмотрев документацию, я нашел это решение:

$client = new Client();

        $res = $client->request('GET', "https://api.behance.net/v2/projects? 
         q=motorcycle&client_id=hU0hcPkrtXxTi0PH1qUB5jztXI1R7iLB",
        ['verify' => 'C:\MAMP\cacert.pem']
        );

        $data = $res->getBody();
        $data = json_decode($data);
        $filteredData = [];

Это прекрасно работало, пока я не вставил php-запрос, чтобы я мог взаимодействовать с API следующим кодом:

$res = $client->request('GET', "https://api.behance.net/v2/projects",
            ["query" => [
            "q"=>$request->query,
            "client_id" => "hU0hcPkrtXxTi0PH1qUB5jztXI1R7iLB"]],
             ['verify' => 'C:\MAMP\cacert.pem']);

Это вернуло то же сообщение об ошибке cURL, и я не могу найти его. Когда я использую var_dump (openssl_get_cert_locations ()); Я получаю это обратно:

rray (8) {["default_cert_file"] => string (25) "c: /usr/local/ssl/cert.pem" ["default_cert_file_env"] => string (13) "SSL_CERT_FILE" ["default_cert_dir "] => string (22)" c: / usr / local / ssl / certs "[" default_cert_dir_env "] => string (12)" SSL_CERT_DIR "[" default_private_dir "] => string (24)" c: / usr / local / ssl / private "[" default_default_cert_area "] => string (16)" c: / usr / local / ssl "[" ini_cafile "] => string (0)" "[" ini_capath "] => string ( 0) ""}

Проблема в том, что c: /usr/local/ssl/cert.pem не существует на моем компьютере. Я не знаю, куда идти отсюда, поскольку исчерпал свои возможности и свои ограниченные знания, поскольку я новичок в Laravel. Я надеюсь, что кто-то может пролить свет на эту проблему ...


решаемые

Я нашел решение своей проблемы, в случае, если кто-то столкнется с тем же сценарием, у меня сработало следующее:

$client = new Client(['verify' => 'C:\MAMP\cacert.pem']);
...