私はWAMPの一部としてPHPバージョン5.5.12を実行しています。 SSL証明書エラー:ローカル発行者証明書を取得できません このスクリプトはログインフォームとパスワードを渡す認証フォームからコンテンツを取得することを目的としています。PHP CURL 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"
私は本当に他に何を試していいのかわかりません。
誰でも他に何を試すことができますか?あなたはcurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
を持って
'curl.cainfo =" C:/wamp/www/domscraper/cacert.pem "'正しいパス/ファイルが存在しますか? –
はいこのパス/ファイルが存在する@Antonis Tsimourtos –
[this](https://curl.haxx.se/ca/cacert.pem) –