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

问题描述 投票:0回答:1

我正在使用 http://www.question2answer.org/ 软件和标准插件来验证码。我尝试更新软件,但升级后我不断收到此错误。我不知道如何解决这个问题。我环顾四周,但没有什么直接相关的。

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

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

警告:file_get_contents( https://www.google.com/recaptcha/api/siteverify?secret=abc6LcMwv8SAAAAAN9QOkIlVKRQZzHS3DeZ8ZLxwxxcdsd-cs&response=03AOmkcwJV_JkhxK8hGJTIVKEDcPrNH5Y0wLwndp7v20Ipqd4HMO21LWHSy PsLFsdfdsfsdsdfsdA6FZ1LiFJZpl6-CmppsTAWc8Qzft_RXLvlzunzQtZWNDp0Kw8T-drMvHiOZf909v4ScysiPmaMrxkq_SSlJaOE_Q6sdfsdfdsfdsh5X7xLqvoFDFbV16BJBTkJ5Pot5ZD wmSGZSD_0pygTdEzh8j-tGuSpZLSDVJmQ7Xq6HR70Dd2idtKz_gfciazqisdfsdfdsfJHH1LyY3FAG_x9zHemy3tXF6oE7rWuBZ8JoHehkWhYYChe-cBbdSX1ZqPioNnaSvkREbooI7esdfsdfd3J kynEKlqnUBl3t__qpDMu&remoteip=12.102.238.217&version=php_1.1.2): 无法打开流:操作失败于 /qa/qa-plugin/recaptcha-captcha/recaptchalib.php 第 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 中添加证书,但它不起作用。一切都工作正常,当我升级时,它开始失败。所有的注册都被卡住了。 请帮忙。

php ssl openssl recaptcha
1个回答
0
投票

上述问题的解决方案是使用基于 CURL 的解决方案,其中将 file_get_contents 替换为 CURL。以下是新修改的代码。我已在逐步博客文章中捕获了所有内容,并为每个人提供了步骤。

$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);
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.