[PHP-users 27522] Re: PEAR の Http_Request で https:// な URL にアクセスできない

Tadashi Jokagi ml @ elf.no-ip.org
2005年 11月 16日 (水) 13:46:40 JST


      ぢょ〜@よくきたなです.

<haward99 @ yahoo.co.jp>さんの「[PHP-users 27521] Re: PEAR の Http_Request で https:// な URL にアクセスできない」から
>    [1]=>
>    array(6) {
>      ["file"]=>
>      string(33) "/usr/local/lib/php/Net/Socket.php"
(snip)
>      array(5) {
>        [0]=>
>        string(20) "ssl://www.google.com"
>        [1]=>
>        int(443)
(snip)

    なので,ストリーム https は多分関係ないと思います.

#ちなみにストリーム一覧に「ssl」は出てきません.

    HTTP_Request のコードを大まかに再現すると下記のようになります.

<?php

require "Net/Socket.php";

$fp = new Net_Socket();
$fp->connect( "ssl://www.google.com");
if ( PEAR::isError( $fp)) {
  var_dump($fp);
} else {
  $fp->writeLine( "GET /adsense/ HTTP/1.1");
  $fp->writeLine( "HOST: www.google.com");
  $fp->writeLine( "");

  var_dump( $fp->read( 8192));
}
 
?>

    このコードはエラーなく実行できますか? ちなみにうちではこんな感じに
    なりました.

$ php -Cq google.php
string(1024) "HTTP/1.1 200 OK
Set-Cookie: adsenseReferralSubId=; Expires=Tue, 14-Feb-06 04:41:28 GMT; Path=/
Set-Cookie: adsenseReferralSourceId=; Expires=Tue, 14-Feb-06 04:41:28 GMT; Path=/
Set-Cookie: adsenseReferralClickId=; Expires=Tue, 14-Feb-06 04:41:28 GMT; Path=/
Set-Cookie: I=; Expires=Tue, 15-Nov-05 04:41:28 GMT; Path=/adsense
Set-Cookie: S=adsense=EsummS2GTJw; Domain=.google.com; Path=/
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Cache-control: private
Date: Wed, 16 Nov 2005 04:41:28 GMT
Server: GFE/1.3

5a65
                         <html>       <head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"> <script src="/adsense/__utm.js" type="text/javascript"><!--

    //--> </script> <title> Google AdSense  </title> <style type="text/css"><!--

.header {
  padding: 4px;
  background: #ffffff;
}

.title, .title td {
  font-size: 100%;
}

.title, .caption, tr.caption th {
  color: #000;
  font-weight: bold;
}

th.caption {
  white-space: nowrap;
  text-align: left"

    ちなみに HTTP_Resuest はそんなに複雑なコードじゃないので調査は難し
    くないですから自分で処理の流れを調査することをお勧めします.下記該
    当コードです.

// HTTP/Request.php
    function sendRequest($saveBody = true)
(snip)
        // 4.3.0 supports SSL connections using OpenSSL. The function test determines
        // we running on at least 4.3.0
        if (strcasecmp($this->_url->protocol, 'https') == 0 AND function_exists('file_get_contents') AND extension_l\
oaded('openssl')) {
            if (isset($this->_proxy_host)) {
                return PEAR::raiseError('HTTPS proxies are not supported.');
            }
            $host = 'ssl://' . $host;
        }
(snip)
        $err = $this->_sock->connect($host, $port, null, $this->_timeout, $this->_socketOptions);

-- 
----.----1----.----2----.----3----.----4----.----5----.----6----.----7
Tadashi Jokagi/Shibuya city mailto:elf @ elf.no-ip.org
YokukitanaII http://elf.no-ip.org/
Yokukita blog http://blog.poyo.jp/
Yokukita wiki http://wiki.poyo.jp/


PHP-users メーリングリストの案内