Services_Amazonでアマゾンのランキングを表示(導入編)

このブログでは、アマゾンアフィリエイト支援ツールの AZlink を使って右側にあるフレームに amazon の商品ランキング を 表示させているのですが、AZlinkのサーバが停止することで、 amazon の商品が表示されないことがあります。Azlink は無償で利用することが出来ますが、そのかわり表示に対する保障はありません。そこで、自前でブログにアマゾンの商品を表示させれば良いじゃないかという事で、色々調べたところ Services_Amazon というツールを使用すれば自作ができそうだと判りました。
Services_Amazon をさわり始めてから一週間程度程たち、ようやく動作させることが出来ましたので、悪戦苦闘の日々をご紹介します。
Services_Amazon は、アマゾンアソシエイトWebサービスが提供している Product Advertising API と接続するためのエンジンで、表示させるためには別途PHPでプログラムを作成する必要があります。今回は導入編ということで Services_Amazon が動作するまでを対象としています。

1.導入環境

Services_Amazon を導入した環境は以下の通りです。

  • FreeBSD 8.2-RELEASE
  • PHP 5.3.6
     

2.Services_Amazonのインストール

Services_AmazonはPEARのライブラリです。FreeBSDのportsを使用してインストールを行いました。インストールが完了すると、「 Amazon.php 」と「 AmazonECS4.php 」が作成されます。一緒に作成されるexampleフォルダにはServices_Amazonの動作を確認するためのPHPのサンプルプログラムが格納されています。

# cd /usr/ports/www/pear-Services_Amazon
# make install clean

(インストールログは省略)

# cd work/Services_Amazon-0.8.0
# ls -F
Amazon.php      AmazonECS4.php  examples/

インストールが無事完了してもPEARのライブラリが格納されているフォルダには自動でファイルが作成されないため、手動で移動する必要があります。

# mkdir  /usr/local/share/pear/Services
# cp -p  Amazon.php /usr/local/share/pear/Services
# cp -p  AmazonECS4.php /usr/local/share/pear/Services

Services_Amazonで連想配列が利用できるようにします。そのため php-hash をインストールします。

# cd /usr/ports/security/php5-hash/
# make install

PHP5.3の場合は、エラーが発生してインストールが完了しません。エラーの対応については以降にまとめています。

3.悪戦苦闘の日々(エラーの対応)


3.1. サンプルのPHPを実行すると hash_hmac/mhash is required エラーが発生

Product Advertising API に接続して連想配列(phpではhash)を利用する必要があるために発生するエラーです。phpでhashが使用できるように以下の二通りの方法でhashパッケージをインストールしてください。PHP5.3ではPECLを使用したインストールが出来ないので、portsを使ってください。

pecl install hash

(php5.3で実行した場合、以下のメッセージが表示されインストールが完了しません。)

/go-pear/hash/hash.c:842: error: duplicate 'static'
/go-pear/hash/hash.c:848: error: duplicate 'static'
*** Error code 1

Stop in /go-pear/pear-build-ikedayzgMnT/hash-1.5.
ERROR: `make' failed

# cd /usr/ports/security/php5-hash/
# make install


3.2.  php5-hash をportsでインストールするとエラーが発生

portsを使用してphp5-hashをインストールすると「 PHP_FW_END 」関数はないみたいなエラーが発生します。

# cd /usr/ports/security/php5-hash/
# make install

/usr/ports/security/php5-hash/work/php-5.3.8/ext/hash/hash.c:1063: error: 'PHP_FE_END' undeclared here (not in a function)

*** Error code 1
1 error
*** Error code 1

Stop in /usr/ports/security/php5-hash.

 
その場合は、usr/ports/security/php5-hash/work/php-5.3.8/ext/hash/hash.c でエラーが発生している1063行目を以下のように修正して、再度インストールを行ってください。
 
修正前) PHP_FE_END
修正語) {NULL, NULL, NULL}
 

# cd /usr/ports/security/php5-hash/
# make install


3.3.  サンプルPHPを実行すると警告メッセージが発生
 

PHPサンプルプログラムを実行すると、PHPの警告メッセージが画面上に表示されます。その警告メッセージを消す為の方法です。

警告メッセージ1

Deprecated: Assigning the return value of new by reference is deprecated in /usr/local/share/pear/HTTP/Request.php on line XXX


警告メッセージ1の対処方法

/usr/local/share/pear/HTTP/Request.php のXXX行目でインスタンスを作成する際に&を使用していることに起因した警告です。警告を消す為には以下のように&を外します。

修正前)$this->_sock =& new Net_Socket(); 
修正後)$this->_sock = new Net_Socket();
 
 
警告メッセージ2

Strict Standards: Redefining already defined constructor for class Net_URL in /usr/local/share/pear/Net/URL.php on line XXX
Strict Standards: Redefining already defined constructor for class XML_Parser in /usr/local/share/pear/XML/Parser.php on line YYY

 
警告メッセージ2の対処方法

/usr/local/etc/php.ini の内容を以下のように修正

修正前)error_reporting = E_ALL | E_STRICT
修正後)error_reporting = E_ALL
 
 

以上です。

関連記事

人気記事のランキング

トラックバックURL

このエントリーのトラックバックURL:
http://or2.to/mt/mt-tb-mt.cgi/60

コメントする