SSL操作失败,代码为1. OpenSSL错误消息:

时间:2017-09-15 18:34:50

标签: php ssl openssl recaptcha

我在那里使用http://www.question2answer.org/软件和标准插件进行验证码。我试图更新软件,升级后我不断收到此错误。我不知道如何解决这个问题。我环顾四周,但没有任何直接关系。

  

警告:file_get_contents():SSL操作失败,代码为1。   OpenSSL错误消息:错误:14090086:SSL   例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败   第128行/qa/qa-plugin/recaptcha-captcha/recaptchalib.php

     

警告:file_get_contents():无法启用加密   第128行/qa/qa-plugin/recaptcha-captcha/recaptchalib.php

     

警告:file_get_contents(   https://www.google.com/recaptcha/api/siteverify?secret=abc6LcMwv8SAAAAAN9QOkIlVKRQZzHS3DeZ8ZLxwxxcdsd-cs&response=03AOmkcwJV_JkhxK8hGJTIVKEDcPrNH5Y0wLwndp7v20Ipqd4HMO21LWHSyPsLFsdfdsfsdsdfsdA6FZ1LiFJZpl6-CmppsTAWc8Qzft_RXLvlzunzQtZWNDp0Kw8T-drMvHiOZf909v4ScysiPmaMrxkq_SSlJaOE_Q6sdfsdfdsfdsh5X7xLqvoFDFbV16BJBTkJ5Pot5ZDwmSGZSD_0pygTdEzh8j-tGuSpZLSDVJmQ7Xq6HR70Dd2idtKz_gfcIAZQisdfsdfdsfJHH1LyY3FAG_x9zHemy3tXF6oE7rWuBZ8JoHehkWhYYChe-cBbdSX1ZqPioNNaSvkREbooI7esdfsdfd3JkynEKlqnUBl3t__qpDMu&remoteip=12.102.238.217&version=php_1.1.2):   无法打开流:操作失败   第128行/qa/qa-plugin/recaptcha-captcha/recaptchalib.php

我去了第128行,这就是我在那里看到的。我看到这一行"return file_get_contents(self::SITE_VERIFY_URL . $params->toQueryString());".我的代码周围有更多代码供您查询。

/**
 * Sends GET requests to the reCAPTCHA service.
 */
class ReCaptchaGetRequestMethod implements ReCaptchaRequestMethod{

    const SITE_VERIFY_URL = 'https://www.google.com/recaptcha/api/siteverify?';

    /**
     * Submit the request with the specified parameters.
     *
     * @param ReCaptchaRequestParameters $params Request parameters
     * @return string Body of the reCAPTCHA response
     */
    public function submit(ReCaptchaRequestParameters $params){
        return file_get_contents(self::SITE_VERIFY_URL . $params->toQueryString());
    }
}
你能帮帮忙吗?我尝试了一些事情,如在php.ini中添加证书,但它没有用。所有这一切都运行良好,当我升级时,它开始失败。所有注册都被卡住了。 请帮忙。

1 个答案:

答案 0 :(得分:1)

上述解决方案是使用基于CURL的解决方案,您可以使用CURL替换file_get_contents。以下是新修改的代码。我已经在step by step blog article中捕获了所有人,并为每个人提供了步骤。

$url = self::SITE_VERIFY_URL . $params->toQueryString();
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $data = curl_exec($ch);
    curl_close($ch);