curl 请求在 SSL 上失败?

2022-08-30 20:34:03

我有此代码

    if(ereg("^(https)",$url))
        curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
    // execute, and log the result to curl_put.log
    $result = curl_exec($curl);


    $error = curl_error($curl);

指定的错误为

SSL read: error:00000000:lib(0):func(0):reason(0), errno 104

关于事业的任何想法


答案 1

我在使用第三方库时遇到了类似的神秘错误。我试过了,但它没有区别。我的错误消息是相似的:CURLOPT_SSL_VERIFY[PEER|HOST]

SSL read: error:00000000:lib(0):func(0):reason(0), errno 54

所以我访问了 http://curl.haxx.se/libcurl/c/libcurl-errors.html,寻找错误代码54。

CURLE_SSL_ENGINE_SETFAILED (54) Failed setting the selected SSL crypto engine as default!

这是错误的 - 我在应用程序的其他部分使用curl发出其他HTTPS请求。所以我继续挖掘并发现了这个问题,R&RCurl:libcurl中的错误54,它有这个宝石:

你看到的输出来自libcurl源代码中的lib/ssluse.c,上面提到的“errno”不是libcurl错误代码,而是当时实际的errno变量。

所以,不要让curl_error()的输出误导你。相反,请使用curl_errno() 来获取正确的错误代码,在本例中,该代码实际上是 56,CURLE_RECV_ERROR。有错误的主机名...


答案 2

使用SSL,请确保您已从php.ini打开openssl扩展。


推荐