cURL error 1014: SSL verify failed 報錯


報錯

[ERROR] cURL error 1014: SSL verify failed (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://mgobe.tencentcloudapi.com/[247] in /www/wwwroot/*.net/vendor/
[ERROR] #0 /www/wwwroot/tencentgame.net/vendor/tencentcloud/tencentcloud-sdk-php/src/TencentCloud/Common/AbstractClient.php(175): TencentCloud\Common\AbstractClient->doRequestWithOptions()
#1 /www/wwwroot/*.net/app/Controller/IndexController.php(46): TencentCloud\Common\AbstractClient->__call()
#2 /www/wwwroot/*.net/vendor/hyperf/http-server/src/CoreMiddleware.php(161): App\Controller\IndexController->index()
#3 /www/wwwroot/*.net/vendor/hyperf/http-server/src/CoreMiddleware.php(113): Hyperf\HttpServer\CoreMiddleware->handleFound()

框架

hyperf swoole 4.5.9 openssl1.1.1

方向

1.系統層。swoole的 openssl版本太低。php --ri swoole 查看openssl版本為1.0.1.系統查看openssl version 版本為1.1.1 升級版本swoole的openssl版本。重新編譯(行不通)
2.框架問題
hyperf框架swoole采用協程模式,guzzle會造成阻塞報錯
根據 https://hyperf.wiki/2.1/#/zh-cn/guzzle

use GuzzleHttp\Client;
use Hyperf\Guzzle\CoroutineHandler;
use GuzzleHttp\HandlerStack;

$client = new Client([
    'base_uri' => 'http://127.0.0.1:8080',
    'handler' => HandlerStack::create(new CoroutineHandler()),
    'timeout' => 5,
    'swoole' => [
        'timeout' => 10,
        'socket_buffer_size' => 1024 * 1024 * 2,
    ],
]);

$response = $client->get('/');

1.在 請求處加入 handler => HandlerStack::create(new CoroutineHandler()) 解決問題
2.直接使用Hyperf\Guzzle\CoroutineHandler 作為處理器設置到 Guzzle 客戶端內即可轉為協程化運行,為了方便創建協程的 Guzzle 對象,我們提供了一個工廠類 Hyperf\Guzzle\ClientFactory 來便捷的創建客戶端

<?php 
use Hyperf\Guzzle\ClientFactory;

class Foo {
    /**
     * @var \Hyperf\Guzzle\ClientFactory
     */
    private $clientFactory;
    
    public function __construct(ClientFactory $clientFactory)
    {
        $this->clientFactory = $clientFactory;
    }
    
    public function bar()
    {
        // $options 等同於 GuzzleHttp\Client 構造函數的 $config 參數
        $options = [];
        // $client 為協程化的 GuzzleHttp\Client 對象
        $client = $this->clientFactory->create($options);
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM