【问题标题】:ssl certificate problem on guzzle and windowsguzzle和windows上的ssl证书问题
【发布时间】:2020-02-09 19:36:05
【问题描述】:

我收到以下错误

GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) in C:\Users\Administrator\Documents\app\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:186
Stack trace:
#0 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(149): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
#1 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(102): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#2 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#3 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\guzzle\src\Handler\Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#4 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\guzzle\src\Handler\Proxy.php(51): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#5 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\guzzle\src\PrepareBodyMiddleware.php(37): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#6 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\guzzle\src\Middleware.php(30): GuzzleHttp\PrepareBodyMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#7 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\guzzle\src\RedirectMiddleware.php(70): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#8 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\guzzle\src\RedirectMiddleware.php(107): GuzzleHttp\RedirectMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#9 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\guzzle\src\RedirectMiddleware.php(72): GuzzleHttp\RedirectMiddleware->checkRedirect(Object(GuzzleHttp\Psr7\Request), Array, Object(GuzzleHttp\Psr7\Response))
#10 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\promises\src\FulfilledPromise.php(39): GuzzleHttp\RedirectMiddleware->GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response))
#11 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\promises\src\TaskQueue.php(47): GuzzleHttp\Promise\FulfilledPromise::GuzzleHttp\Promise\{closure}()
#12 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\promises\src\Promise.php(246): GuzzleHttp\Promise\TaskQueue->run(true)
#13 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\promises\src\Promise.php(223): GuzzleHttp\Promise\Promise->invokeWaitFn()
#14 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\promises\src\Promise.php(267): GuzzleHttp\Promise\Promise->waitIfPending()
#15 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\promises\src\Promise.php(225): GuzzleHttp\Promise\Promise->invokeWaitList()
#16 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\promises\src\Promise.php(62): GuzzleHttp\Promise\Promise->waitIfPending()
#17 C:\Users\Administrator\Documents\app\vendor\guzzlehttp\guzzle\src\Client.php(131): GuzzleHttp\Promise\Promise->wait()
#18 C:\Users\Administrator\Documents\app\hypervote1.8.php(864): GuzzleHttp\Client->request('GET', 'http://www.inst...', Array)
#19 C:\Users\Administrator\Documents\app\hypervote1.8.php(230): isValidProxy('http://148.251....', Object(League\CLImate\CLImate))
#20 C:\Users\Administrator\Documents\app\hypervote1.8.php(18): run(Object(InstagramAPI\Instagram), Object(League\CLImate\CLImate))
#21 {main}

在运行代码时:

$client = new GuzzleHttp\Client();
            $res = $client->request("GET", "http://www.google.com", ["timeout" => 60, "proxy" => $proxy]);
            $code = $res->getStatusCode();
            $is_connected = true;

我该如何解决这个问题?

【问题讨论】:

    标签: php curl guzzle


    【解决方案1】:
    1. 运行 php -i | grep php.ini 以查看您的 php.ini 配置文件在哪里。

    2. 前往https://curl.haxx.se/ca/cacert.pem下载最新证书。

    3. curl.cainfo="/path/to/where/you/saved/cacert.pem" 添加到您的php.ini 文件中。

    4. 重启你的 php/services/whatever 然后重试。

    如果上述步骤没有解决方案,那么您访问的站点可能正在使用自定义 SSL 证书,因此请尝试从您的浏览器下载证书,从中创建一个 pem 文件并使用 @ 对其进行测试987654324@ 作为 Guzzle 客户端选项。

    注意,在执行上述选项之前,最好/最好联系网站所有者进行验证。出于安全原因。

    【讨论】:

      猜你喜欢
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 2022-11-22
      • 1970-01-01
      • 2021-08-07
      相关资源
      最近更新 更多