• CURL SSL错误
    • 相关代码
    • 解决方案

    CURL SSL错误

    在低版本的CURL中,若在服务启动前执行CURL一个ssl连接 那么此后在回调函数内再次执行该curl,会报错:
    A PKCS #11 module returned CKR_DEVICE_ERROR, indicating that a problem has occurred with the token or slot.
    若不在服务启动前执行CURL SSL连接,则不报错。

    相关代码

    1. $a = function (){
    2. $ch = curl_init("https://www.baidu.com");
    3. $curlOPt = array(
    4. CURLOPT_CONNECTTIMEOUT=>3,
    5. CURLOPT_TIMEOUT=>10,
    6. CURLOPT_AUTOREFERER=>true,
    7. CURLOPT_USERAGENT=>"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)",
    8. CURLOPT_FOLLOWLOCATION=>true,
    9. CURLOPT_RETURNTRANSFER=>true,
    10. CURLOPT_SSL_VERIFYPEER=>false,
    11. CURLOPT_SSL_VERIFYHOST=>false,
    12. CURLOPT_HEADER=>true,
    13. );
    14. curl_setopt_array($ch,$curlOPt);
    15. $result = curl_exec($ch);
    16. var_dump(curl_error($ch));
    17. curl_close($ch);
    18. };
    19. $a();
    20. if(pcntl_fork()){
    21. $a();
    22. }else{
    23. $a();
    24. }

    swoole中同理。

    解决方案

    更新libcurl至最新的7.5.x,并重新编译php curl拓展。
    查看拓展版本:

    1. php --ri curl