2017-09-15 50 views
0

我正在使用http://www.question2answer.org/软件和用于验证码的标准插件。我试图更新软件,升级后我不断收到此错误。我不知道如何解决这个问题。我环顾四周,但没有直接关系。SSL操作失败,代码为1. OpenSSL错误消息:

Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /qa/qa-plugin/recaptcha-captcha/recaptchalib.php on line 128

Warning: file_get_contents(): Failed to enable crypto in /qa/qa-plugin/recaptcha-captcha/recaptchalib.php on line 128

Warning: 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): failed to open stream: operation failed in /qa/qa-plugin/recaptcha-captcha/recaptchalib.php on line 128

我去了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中添加证书,但它不起作用。所有这些工作都很好,当我升级时,它开始失败。所有注册都卡住了。 请帮忙。

回答

0

上述解决方案是使用基于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); 
+0

我不知道这corect解决方案,您的错误消息称“SSL3_GET_SERVER_CERTIFICATE:证书验证失败”,它看起来像它一样在这里https://stackoverflow.com/q/26148701/2360229 你现在正在做的是:你设置CURLOPT_SSL_VERIFYPEER = false 你也可以用file_get_contents()来做到这一点,参见https://stackoverflow.com/a/28701786/2360229 所以,基本上,你只是说,该功能不会验证对等方,这就是你如何抑制初始错误,但不能解决问题。 –

相关问题