我正在运行PHP版本5.5.12作为WAMP的一部分。PHP CURL WAMP - SSL证书错误:无法获取本地发行者证书
当我尝试执行此代码,我发现了以下错误: 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"
我真的不知道还有什么可以尝试的。
任何人都可以建议我还有什么可以尝试?
是'curl.cainfo =“C:/wamp/www/domscraper/cacert.pem”'正确的路径/文件存在吗? –
是这个路径/文件存在@Antonis Tsimourtos –
也许尝试下载和替换[this](https://curl.haxx.se/ca/cacert.pem) –