2011-02-08 23 views
1

PosterousブログからRSSフィードを使用してコンテンツを取得しているPHP管理サイトがあります。このフィードにはPosterous URLの画像がありますが、検索するとAmazon S3 URLにリダイレクトされます。SignatureDoesNotMatchを取得せずにPHP + CURLでS3ホストイメージを取得する方法は?

私はcurlを使ってイメージをプルしようとし、PHPのCURLマニュアルページのコードを使ってローカルにキャッシュしようとしています:http://www.php.net/manual/en/ref.curl.php#93163。 S3へのリダイレクトを処理することもありますが、イメージを取得する代わりに、SignatureDoesNotMatchエラーが発生したXMLファイルが返されます。

この原因は何ですか?そして、エラーを防ぐために私は何ができますか?

答えて

1

障害が断続的に発生する場合は、ファイル(キー)名と関係している可能性があります。一般的な原因は、ファイル名のスペースです。あるいは少なくともそれの核心 -

あなたがそれらをコードするか、%20

それだった
+0

でスペースを置き換えるURLする必要があります。断続的にPosterousによって生成されたAWSシグネチャには、特殊文字(%2B、%3Dなど)が含まれています。私が使用した[get_url()関数](http://www.php.net/manual/en/ref.curl.php#93163)では、urldecodeを呼び出していました。これらの特殊文字はすべてun -URLエンコードされた値を返し、それらを再びurlencodeしないため、CURL要求は失敗しました。私の場合は、単にurldecodeを削除するだけです。 – kinder

+0

@kinder - 素晴らしいもの。私は過去にキーとバケツの名前に特殊文字を含む数多くの問題にぶつかってきました。 –

0

SignatureDoesNotMatchは、あなたがリソースにアクセスする権限がないときに発生するエラーです。必要な資格情報を提供していますか?

関連する問題