[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 メーリングリストの案内