下記のサイトのサンプルコードを使っていますが、エラーが出てうまく動作しません。
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
XML_unserializeという関数が定義されていないという意味ですね。
103行目の
// XML パースライブラリーを読み込む include('xml.php');
この部分で、「PHP XML Libraly」というライブラリを読み込む必要があるようです。
参考にされているサイトだと、「Amazon Web サービスの使い方(5) - XMLを連想配列に格納する :: Holiday Webmaster Blog」のエントリに、PHP XML Libralyの解説があります。
とりあえず、動かすには
でいいと思います。
乗っかった船なので。
/* ---------------- 変更部分(ここから) -------------------------- */ // 自分のアクセスキー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の誤入力はなさそうです。
うむー、どうしてだろう。。
引き続き、考えられる解決方法がありましたら、よろしくお願いします。
"[4YJE0○○○1BQM○○○MKENN]";
の角括弧、「[」と「]」は必要ないと思います。
あとプログラムに少し手を加えているのであれば、デフォルトの状態に戻して試してみてください。
ありがとうございます。解決しました!
$AWSACCESSKEYID = "4YJE0○○○1BQM○○○MKENN";
と「[」と「]」をはずし入力すると動作しました。
丁寧で的確なご指摘、本当にありがとうございました。
早速の回答、ありがとうございます!
「PHP XML Libraly」を読み込こむことでエラーを回避することができました。
(「PHP XML Libraly」はPHP5を使ってれば必要ないものだと思って、SimpleXMLElement->getNamespaces() などを無理やり入れ込んだりしていました・・・汗。)
ただ、動作確認をしたところ(例:「ハワイ」で検索)
ハワイに関する商品が件見つかりました
1
と表示されるだけで、具体的に検索結果を表示することができませんでした。
これについての解決方法をわかる方お願いします。
uniluq さんありがとうございました。