[PHP-users 11632] Re: CURLを用いてHTTPS 通信

D.Yamashita php-users@php.gr.jp
Thu, 21 Nov 2002 00:49:47 +0900


山下と申します。

> curlを用いてhttps://〜のデータを取得したいと考えています。
> そこで、過去ログの6456などを参考にソースを書いてみました。
> しかし、実行したところ、結果が何も表示されません。
> エラーメッセージも表示されません。
>
> 普通のhttp://〜のファイルだとちゃんとデータを取得することが出来ました。
>
> これはソースの問題でしょうか、それとも環境の問題でしょうか?
> それとも何か別の原因があるのでしょうか?
> 何かアドバイスをいただければ幸いです。

ソースを以下のように変更して、結果をファイルに書き込むようにして
みてはいかがでしょうか?

$ch = curl_init("https://www.secure.com/foo.php");
curl_setopt ($ch, CURLOPT_POSTFIELDS, "var1=aaa&var2=bbb");
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_SSLVERSION,3);
curl_setopt ($ch, CURLOPT_TIMEOUT, 120);

$tmpfile = tempnam ('/tmp', 'phptools');
if(!($fp = fopen ($tmpfile, 'w')))
  ・・・エラー処理・・・
else {
    curl_setopt ($ch, CURLOPT_FILE, $fp);

    curl_exec ($ch);
    curl_close ($ch);
    fclose ($fp);
    $fp = fopen ($tmpfile, 'r');
    $results .= fread ($fp, filesize ($tmpfile));
    fclose ($fp);
    unlink ($tmpfile);
}

あとは、
    curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla・・・")
という感じでUSERAGENTをちゃんと指定してみるとか。

参考までに、全くもって個人のページですが、
http://www.homedjr.org/index.html
に、HTTPSにポストするPHPプログラムがありますよ。
うちではちゃんとHTTPSへのポストができています。

PHP 4.1.2 (Debian Package)
libcurl 7.9.5 (OpenSSL 0.9.6g)

では。

国国国国国国国国国国国国国国国国国国国国国国国国
大阪大学大学院 工学部研究科 情報システム工学専攻
                        山 下  大 介
  Mail: yamasan@ise.eng.osaka-u.ac.jp
国国国国国国国国国国国国国国国国国国国国国国国国