2017-09-15 598 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 所以,基本上,你只是說,該功能不會驗證對等方,這就是你如何抑制初始錯誤,但不能解決問題。 –

相關問題