AmazonWebサービスとPHP5を使ってAmazon検索ボックスを作成したいです。


下記のサイトのサンプルコードを使っていますが、エラーが出てうまく動作しません。 
http://www.naminorito.com/blog/2007/05/30060000.php 

<エラー内容>
Fatal error: Call to undefined function XML_unserialize()
in /home/○○○○/www/test/sora.php on line 109

PHP4使用者のサンプルコードなので
PHP5ではうまくいかないのでしょうか。

PHP5でも動作する方法を教えてください。

<環境>
さくらサーバ(スタンダード)
PHPのバージョン PHP 5.2.5

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/05/09 04:47:32
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:uniluq No.1

回答回数14ベストアンサー獲得回数1

ポイント30pt

XML_unserializeという関数が定義されていないという意味ですね。

103行目の

// XML パースライブラリーを読み込む
include('xml.php');

この部分で、「PHP XML Libraly」というライブラリを読み込む必要があるようです。

参考にされているサイトだと、「Amazon Web サービスの使い方(5) - XMLを連想配列に格納する :: Holiday Webmaster Blog」のエントリに、PHP XML Libralyの解説があります。

とりあえず、動かすには

でいいと思います。

id:rontena

早速の回答、ありがとうございます!

「PHP XML Libraly」を読み込こむことでエラーを回避することができました。

(「PHP XML Libraly」はPHP5を使ってれば必要ないものだと思って、SimpleXMLElement->getNamespaces() などを無理やり入れ込んだりしていました・・・汗。)

ただ、動作確認をしたところ(例:「ハワイ」で検索)

ハワイに関する商品が件見つかりました

と表示されるだけで、具体的に検索結果を表示することができませんでした。

これについての解決方法をわかる方お願いします。

uniluq さんありがとうございました。

2008/05/08 08:26:14
id:uniluq No.2

回答回数14ベストアンサー獲得回数1

ポイント70pt

乗っかった船なので。

/* ---------------- 変更部分(ここから) -------------------------- */
 
// 自分のアクセスキーID
$AWSACCESSKEYID = "[Your Access Key ID]"; 
 
// 自分のアソシエイトID
$ASSOCIATETAG = "[Your Associate ID]";

この部分にご自分のアクセスキーIDとアソシエイトIDを打ち込んでいますか?

AmazonのAPIを利用するには、Amazon Web Serviceに登録してアクセスキーID(デベロッパートークン)を入手する必要があります。

試しに設置してみたところ、上のIDを入力していない場合

ハワイに関する商品が件見つかりました

1

という同様の結果になりました。

アソシエイトIDのほうは、入力しなくても動作するようです。

id:rontena

uniluqさん、ありがとうございます。

アクセスキーIDは、下記のとおり打ち込んでおります。

$AWSACCESSKEYID = "[4YJE0○○○1BQM○○○MKENN]";

uniluqさんの設置結果を参考にすると、

Amazonのサーバに、アクセスできていない可能性が高いと思い、下記の方法により

自分のアクセスキーIDでAmazonサーバにアクセスできるかを確認ました。

Amazon Web サービスの使い方(3) - リクエストURL生成::Holiday Webmaster Blogに掲載されている、Amazon Web サービス リクエストURL生成サンプルプログラムを使って、リクエストURLを作る。

②そのURLのアクセスキーIDの部分だけを、自分のアクセスキーIDに変え送信する。

③レスポンスを確認する。

結果、正常に検索結果が返っていましたので、IDの誤入力はなさそうです。

うむー、どうしてだろう。。

引き続き、考えられる解決方法がありましたら、よろしくお願いします。

2008/05/08 19:19:31
id:uniluq No.3

回答回数14ベストアンサー獲得回数1

ポイント30pt
"[4YJE0○○○1BQM○○○MKENN]"; 

の角括弧、「[」と「]」は必要ないと思います。

あとプログラムに少し手を加えているのであれば、デフォルトの状態に戻して試してみてください。

id:rontena

ありがとうございます。解決しました!

$AWSACCESSKEYID = "4YJE0○○○1BQM○○○MKENN";

と「[」と「]」をはずし入力すると動作しました。

丁寧で的確なご指摘、本当にありがとうございました。

2008/05/09 04:23:49

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません