プロが教える店舗&オフィスのセキュリティ対策術

下記のようなスクリプトで認証を試みておりますが、エラーが出てしまいます。エラー原因がお分かりになりましたら、ご指摘いただければ幸いです。require_onceで読み込んでいるファイルは、http://amazon.ringoon.jp/rest_test/pa_sig.txtです。
ちなみに、MAXOSで、PHPはVersion 5.2.11です。Eclipseで作っており、ローカル環境でテスト中の状態です。
---------------
require_once("pa_sig.php");
#amazonアフェリエイトID
$afe_id = "****";
#AWSのID
$aws_id ="****";
#AWSのサービス名
$aws_service= 'AWSECommerceService';
#AWSのバージョン
$aws_version ='2005-10-05';
#AWSのURL
$aws_url='http://webservices.amazon.co.jp/onca/xml';
#AWSのオペレーション
$aws_operation ='ItemLookup';
#ItemID
$item_id='4886487467';
#AWSのレスポンスグループ
$response_group='small';
#タイムスタンプ
$timestamp=gmdate('c');

#URl+パラメータの作成
$url = $aws_url.'?Servie='.$aws_service.'&AWSAccessKeyID='.$aws_id.'&AssociateTag='.$afe_id
.'&Version='.$aws_version.'&Operation='.$aws_operation.'&ItemId='.$item_id.'&ResponseGroup='
.$response_group.'&Timestamp='.$timestamp;

#pa_sig.phpの関数 URLを署名付きに変換する。
$url_sig = add_signature($url);

$handle=fopen($url_sig,'r');
$buffer=fgets($handle);
echo $buffer;
----------------

エラーメッセージは、『Warning: fopen(http://webservices.amazon.co.jp/onca/xml?AWSAcce … failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /Users/****/Sites/****/test.php on line 33 Warning: fgets(): supplied argument is not a valid stream resource in /Users/****/Sites/****/test.php on line 34』です。

恐れ入りますが、宜しくお願いいたします。

A 回答 (1件)

実際、記述されたプログラムをコピペして


fopenする前の段階のURLを出力してみましたところ、parse_url時点で文字化けが発生していることがわかりました。

で、原因ですが、恐らく質問者さんは、$aws_urlに記述しているURLをどっかのWebからコピってきて貼り付けたのだと思います。
その際に、UnicodeのZERO WIDTH Spaceというものが一緒にくっ付いてしまっています。「http」の前に、エディタなどの見た目上見えない3バイトが余計に含まれているのが原因です。
一度URLの部分を全て消して、手書きなりして書き直してみてください。
    • good
    • 0
この回答へのお礼

遅くなりまして、申し訳ありませんでした!!
ありがとうございました!

お礼日時:2010/05/02 23:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!