2012-03-07 14 views
2

Amazon Cloudfrontにアクセスしようとすると、PHPでcURLを使用して奇妙なタイムアウトが発生しています。これは、すべての無効化要求に影響を与え、配布などを作成しているようです。cURLは0バイトまたは非常に少ないバイトを受け取ったと報告してからタイムアウトします。 Operation timed out after 120000 milliseconds with 88 out of 619 bytes receivedPHP cURLとSSLで奇妙なタイムアウトが発生する

タイムアウトの設定を延長しても違いはありません。 CURLOPT_VERBOSEを使用してトレースを置く

は、この出力を生成します

* About to connect() to cloudfront.amazonaws.com port 443 (#0) 
* Trying 72.21.215.67... * connected 
* Connected to cloudfront.amazonaws.com (72.21.215.67) port 443 (#0) 
* skipping SSL peer certificate verification 
* SSL connection using SSL_RSA_WITH_RC4_128_MD5 
* Server certificate: 
* subject: CN=cloudfront.amazonaws.com,O=Amazon.com Inc.,L=Seattle,ST=Washington,C=US 
* start date: Jul 30 00:00:00 2010 GMT 
* expire date: Jul 29 23:59:59 2013 GMT 
* common name: cloudfront.amazonaws.com 
* issuer: CN=VeriSign Class 3 Secure Server CA - G2,OU=Terms of use at https://www.verisign.com/rpa (c)09,OU=VeriSign Trust Network,O="VeriSign, Inc.",C=US 
> POST /2010-11-01/distribution/E1CIM4A92QFD98/invalidation HTTP/1.1 
User-Agent: S3/php 
Accept: */* 
Host: cloudfront.amazonaws.com 
Date: Wed, 07 Mar 2012 14:31:58 GMT 
Content-Type: application/xml 
Authorization: AWS ************************ 
Content-Length: 200 

< HTTP/1.1 201 Created 
< x-amzn-RequestId: 4c2d0d3f-6862-11e1-ac27-5531ac8c967f 
< Location: https://cloudfront.amazonaws.com/2010-11-01/distribution/E1CIM4A92QFD98/invalidation/I35KLNROKA40FU 
* Operation timed out after 120000 milliseconds with 0 bytes received 
* Closing connection #0 

これはthis questionに似ているようです。しかし、私の場合、カールは実際には応答を得ているようですが、何とかそれを無視してタイムアウトしますか?私が見るところでは、応答は受信され(201 Created ...)、SSLエラーはありません。だから、なぜカールタイムアウトですか?

cURLのバージョン情報

[version_number] => 463623 
[age] => 3 
[features] => 1597 
[ssl_version_number] => 0 
[version] => 7.19.7 
[host] => x86_64-unknown-linux-gnu 
[ssl_version] => NSS/3.12.7.0 
[libz_version] => 1.2.3 
[protocols] => Array ([0] => tftp [1] => ftp [2] => telnet [3] => dict [4] => ldap [5] => ldaps [6] => http [7] => file [8] => https [9] => ftps [10] => scp [11] => sftp) 
+0

「Content-Type:application/xml」と「Content-Length: '0バイトを受信しました。 '...それは**応答ヘッダー**が到着したように見えますが、この200バイトのXMLではありません**レスポンスボディ**。 –

+0

ファイアウォールを無効にするのは、テストを行い、何が起こるかを確認することだけです。 –

+0

ありがとうございます@ J.Bruni。私は 'Content-Length'ヘッダーがリクエストのためのものだと考えています。さらに見てみると、サーバーからの応答(' HTTP/1.1 201 Created')にLocationヘッダーがあります。 '0バイトを受け取った 'というのはまさに問題です。いくつかのバイトを受信しましたが、カールはそれらを無視してタイムアウトします...ファイアウォールはありません – gingerlime

答えて

2

ないカールのこのバージョンでは、このように動作理由を完全に確認を(それバグのように見えますが)解決策はカールとPHPの異なるバージョンをコンパイルすることでした(these instructions

0

それはあなたのカールのセッションを設定しているかを確認するために役立つだろう。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/BuiltinObjectToken-EquifaxSecureCA.crt"); 

あなたはSSLに問題を検証抱えているかどうかを確認するための簡単なテストは次のとおりです:あなたは、のようなものをやっている

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
それでも
+1

'VERIFYPEER'と' VERIFYHOST'の両方がfalseです。私は冗長な出力はSSL検証の問題を示していないと思う。それは、要求を送信し、応答を受信しますが、まだタイムアウト... – gingerlime

関連する問題