当前位置: 首页 > 知识库问答 >
问题:

PHP CURL WAMP-SSL证书错误:无法获取本地颁发者证书

凌宏大
2023-03-14

我运行PHP版本5.5.12作为WAMP的一部分。

当我尝试执行此代码时,我得到以下错误: SSL证书错误:无法获得本地发行者证书此脚本旨在通过登录和密码从认证表单获取内容。

<?php

include('simple_html_dom.php');
ini_set('max_execution_time', 0);
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('memory_limit', '2G');

class EmailScraping {

    public $url;

    public function __construct($url) {
        if ($this->validUrl($url))
            $this->url = $url;
        else {
            echo 'bad url <br>';
        }
    }

    public function getContent() {

        $username = "****"; 
        $password = "****";

        //login form action url
        $url = 'https://placement.emploiquebec.gouv.qc.ca/mbe/login/portail/auth.asp?provenance=emplr&CL=french';
        $postinfo = "posted&L_OBLG_NOM_UTIL=Votre code d'utilisation&OBLG_NOM_UTIL=" . $username . "&L_OBLG_MOT_PASSE=Votre mot de passe&OBLG_MOT_PASSE=" . $password . "&continuer=CONTINUER&LastLogin&NbEssai=0";

        $cookie_file_path = "./cookies.txt";

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_NOBODY, false);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_ENCODING , "");
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
        //set the cookie the site has for certain features, this is optional
        curl_setopt($ch, CURLOPT_COOKIE, "cookiename=0");
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7");
        curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);        
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);    
        curl_setopt($ch, CURLOPT_CAINFO, getcwd() . '\cacert.pem');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);       
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
        $html1 = curl_exec($ch);
        curl_close($ch);

        $ch = curl_init();

        //page with the content I want to grab
        curl_setopt($ch, CURLOPT_URL, "https://placement.emploiquebec.gouv.qc.ca/mbe/ut/suivroffrs/esuivroffrs.asp?CL=french");
        curl_setopt($ch, CURLOPT_POST, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, "");
        $answer = curl_exec($ch);

        if (curl_error($ch)) {
            echo curl_error($ch);
        }

        curl_close($ch);
        return $answer;
    }

    public function validUrl($url) {

        if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $url)) {
            return false;
        }
        return true;
    }

}

$scraper = new EmailScraping('https://www.facebook.com');
$result = $scraper->getContent();
$html = "<base href='https://placement.emploiquebec.gouv.qc.ca/mbe/login/portail/auth.asp?provenance=emplr&CL=french' />" . $result;
echo $html;

我试图在php.ini文件中添加这段代码,并重新启动了WAMP服务器,但仍然得到相同的错误。

curl.cainfo="C:/wamp/www/domscraper/cacert.pem"

我真的不知道还能尝试什么。

有人能告诉我还有什么可以尝试的吗?

共有2个答案

胡越泽
2023-03-14

这是bast配置:更改为curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);

我一直在尝试连接到由邮递员制作的API中,它可以正常工作。

我在Windows 64位上使用WAMP(PHP7 Apache)。

归鸿朗
2023-03-14

您有curl\u setopt($ch,CURLOPT\u SSL\u VERIFYPEER,true)

尝试设置为false

这里有一些文件的链接-http://php.net/manual/en/function.curl-setopt.php

这应该只是开发,在产品上,你可能应该解决任何证书问题,可能需要从提供商那里获得证书/密钥。

有关错误日志记录,请添加(并查看文档以了解更多信息)

$verbose = fopen ( 'php://temp', 'w+' );
curl_setopt ( $curlManager, CURLOPT_VERBOSE, true );
curl_setopt ( $curlManager, CURLOPT_STDERR, $verbose );

如果不需要调试,您也可以尝试删除其中一些选项。

 类似资料:
  • 我正在Windows7上运行PHP版本5.6.3作为XAMPP的一部分。 当我尝试使用Mandrill API时,我得到以下错误: 未捕获异常“Mandrill_HttpError”,消息为“API调用消息/send-template失败:SSL证书问题:无法获取本地颁发者证书” 我已经尝试了在StackOverflow上读到的所有内容,包括向php.ini文件添加以下内容: 当然可以从http:

  • 问题内容: 我正在Windows 7上将PHP版本5.6.3作为XAMPP的一部分运行。 当我尝试使用Mandrill API时,出现以下错误: 消息“ API调用消息/发送模板失败”的未捕获异常“ Mandrill_HttpError”:SSL证书问题:无法获取本地颁发者证书 我已经尝试了我在StackOverflow上阅读的所有内容,包括将以下内容添加到php.ini文件中: 当然,还可以从h

  • 问题内容: 我在本地开发环境上使用WAMP,并尝试从信用卡中扣款,但收到错误消息: cURL错误60:SSL证书问题:无法获取本地颁发者证书 我在Google上进行了很多搜索,很多人建议我下载此文件:cacert.pem,将其放在某个位置,然后在php.ini中引用它。这是我的php.ini中的部分: 但是,即使多次重新启动服务器并更改了路径后,我仍然收到相同的错误消息。 我使用来自Apache模

  • 我在Google上搜索了很多,很多人建议我下载这个文件:cacert.pem,把它放在某个地方,并在我的php.ini中引用它。这是我的php.ini中的部分: 然而,即使在重新启动服务器几次并更改路径后,我也会得到相同的错误消息。 我使用Apache模块中的WAMP并启用ssl_module。在PGP扩展中,我启用了php_curl。 这是我正在运行的代码:

  • 我使用MAMP作为本地开发环境。我想实现一个谷歌认证-但不断得到这个SSL错误。 < li >正如其他SO主题所建议的,我已经在我的PHP.ini文件中添加了这行代码: 知道如何在我的本地环境中传递这个SSL错误吗? 这是代码:

  • 我正在Windows服务器2016上的wamp上使用洋红色社区版2.2。每当我尝试登录以通过系统同步您的Magento市场购买时 “SSL 证书问题:无法获取本地颁发者证书” 我尝试了这个论坛中其他一些线程中提供的解决方案来下载cacert。pem并在php.ini中执行以下设置 curl . cainfo = " C:\ wamp 64 \ bin \ PHP \ PHP 7 . 1 . 9 \