人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのfile_get_contentsでhttpsのurlにアクセスすると、以下のエラーが表示されます。

しかし、実際にそのurlにアクセスしてデータは取得できています。エラーじゃないのに、エラーを表示してしまっているようです。

@file_get_contentsとして、エラーを出力しないようにすればいいのですが、その他根本解決する方法はありませんでしょうか?

環境は CentOS5/PHP5+openssl付きインストール/apache2.2

---
■コード
$hoge = file_get_contents('https://hoge.com');

■エラー内容
Unexpected PHP error [file_get_contents() [<a href='http://php.net/function.file-get-contents'>function.file-get-contents</a>]: SSL: fatal protocol error] severity [E_WARNING] in

■参考情報
file_get_contentsによるhttpsアクセスが失敗する
http://ml.php.gr.jp/pipermail/php-users/2004-June/022720.html

●質問者: cbic
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:hoge HTTPS PHP SSL T-con
○ 状態 :終了
└ 回答数 : 3/4件

▽最新の回答へ

1 ● pahoo
●27ポイント

file_get_contents で https サイトからコンテンツを取得するには、ラッパとして SSL 通信がサポートされている必要があります。

そこで確認をお願いします。

phpinfo関数の結果を表示し、Registerd PHP Streamを見てください。httpsは含まれていますか?


サポートされていない場合は再コンパイルを検討した方が良いと思いますが、別のやり方としてCURL関数を使ったアクセス方法があります。「PHPセキュリティ対策:SSL通信を行う」を参考にしてください。

◎質問者からの返答

回答ありがとうございます。

Registered PHP Streams php, file, http, ftp, compress.bzip2, compress.zlib, https, ftps

となっていました。エラーが出るだけで、実際にhttpsへのfile_getはできているので、問題ないようにも思えますが、curl等別の手段でやったほうがいいですか?


2 ● pahoo
●12ポイント

エラーが出るだけで、実際にhttpsへのfile_getはできているので、問題ないようにも思えますが

であれば、強いてCURLを持ち出す必要はないと思います。

E_WARNINGなので、実行時に何らかのトラブルが発生しているということですね。

相手のhttpsサーバ側の問題ということはないですか?

たとえば以下のようなことはありませんか。

◎質問者からの返答

ありがとうございます。証明書は正規であり、RSA暗号でした。非常に謎ですが、現状エラー表示がでるだけで問題がないので、このままでいこうか検討してみます!


3 ● b-wind
●41ポイント ベストアンサー

SSL: fatal protocol error] severity [E_WARNING]

エラーメッセージからするとSSLのプロトコル上問題があるが、通信自体は出来ていると読める。


PHP: HTTP と HTTPS - Manual

IIS のような、いくつかの標準に対応してない Web サーバは、PHP に警告を発生させるような手順でデータを送信します。

これに該当する可能性は無いですか?

◎質問者からの返答

まさに、これでした。https側のサーバーがIISでした!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ