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

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

●質問者: ron
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:109 Amazon HOME ON PHP
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● uniluq
●30ポイント

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

103行目の

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

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

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

とりあえず、動かすには

でいいと思います。

◎質問者からの返答

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

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

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

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

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

1

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

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

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


2 ● uniluq
●70ポイント

乗っかった船なので。

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

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

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

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

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

1

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

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

◎質問者からの返答

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の誤入力はなさそうです。

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

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


3 ● uniluq
●30ポイント
"[4YJE0○○○1BQM○○○MKENN]"; 

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

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

◎質問者からの返答

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

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

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

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

関連質問


●質問をもっと探す●



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