2017-04-20 15 views
1

私は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);

を持って

+0

'curl.cainfo =" C:/wamp/www/domscraper/cacert.pem "'正しいパス/ファイルが存在しますか? –

+0

はいこのパス/ファイルが存在する@Antonis Tsimourtos –

+0

[this](https://curl.haxx.se/ca/cacert.pem) –

答えて

3

false

にそれを設定してみてくださいここではいくつかのドキュメントへのリンクです - http://php.net/manual/en/function.curl-setopt.php

これはのみ、PRODにあなたは、おそらくすべての証明書の問題を解決する必要があり、おそらくだろう開発する必要がありますプロバイダから証明書/鍵を取得する必要があります。

エラーログについては

追加(および追加情報のためにドキュメントをチェックアウト)

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

デバッグに必要でない場合にも、これらのオプションの一部を削除してみてください。

+0

をダウンロードして置き換えてみてください。curl_setopt($ ch、CURLOPT_SSL_VERIFYPEER、 false)を返しますが、引き続き同じエラーが発生します。ユーザー名とパスワードを渡すログインフォームからコンテンツを取得するのが好きです。助けてください。 –

+0

回答を編集してコメントに入れるのではなく、エラーログを追加します。 – DaveCoast

0

これはバスト構成です。 からの変更点です。curl_setopt($ ch、CURLOPT_SSL_VERIFYPEER、true); 〜 curl_setopt($ ch、CURLOPT_SSL_VERIFYPEER、false);

私はPostmanが作成したAPIに接続しようとしていて、動作しています。

Windows 64ビット版でWAMP(PHP7 + Apache)を使用しています。

関連する問題