a-ki blog

見たこと、聞いたこと、考えたこと。

Amazon Product Advertising APIへの変更で四苦八苦

AmazonのWebサービスがECS4からAmazon Product Advertising APIへとかわります。

8月15日を限りに旧システムはまったく使えなくなるので、僕も重い腰を上げて対応をはじめました。
簡単そうに見えて、思わぬトラブル続出(;・∀・)
いや~参りました。

サーバーはロリポップとチカッパの二つ。
PHP+PEAR::Services _Amazonという環境です。。

プログラム本体の書き換えは至って簡単なのですが、PEAR::Services _Amazonをver.0.8にアップデートする必要があるのと、それに伴ってhash_hmac 関数が必要になるためPHP5が必須になります。

ロリポもチカッパも現在PHP4→PHP5への移行期でコントロールパネルからPHP5への切り替えが可能です。ただ、PHP4がモジュール版だったのに対し、PHP5ではCGI版になったり、一部php.iniの設定が変わったりしてかなり戸惑います。

特にinclude()関連が鬼門(;´Д`)

PHP5では読み込みファイルをURLで指定(include(‘http://www.~’))することができないようで、相対パスかルートからの絶対パス(include(‘/home/~’))で指定しなければいけません。
さらに.htaccessでHTMLファイルをPHP化している場合、一部の関数が正常に動作しないようです。これは.htaccessファイルにAddHandler php5-script .htmlと書き足すことで回避できます。

ロリポもチカッパもPHP5ではphp.iniの設定を一部自分でできるようになりましたが、この中にあるSAFE_MODEをOFFにしないとServices _Amazonが動いてくれません(これではまりまくった(T_T) ウルウル)

さらにこれもかなり問題だと思うのですが。。。

go-pearを使ってServices _Amazonをアップデートしようとしたところ”tempフォルダに書き込みできません”とエラーが出てアップデートも再インストールもできません。
どういうことかというと、go-pear関連のフォルダの所有者がapacheになっていて書き込みのパーミッションが変更できなくなっていたのです。
ロリポの場合はロリポップFTPから所有者の変更が可能ですが、チカッパでは自分で設定ができません。
改めて違うフォルダにgo-pearをインストールするところからスタートです。しかも古いgo-pearはサポートに連絡して削除しないとFTPからではどうにもできません* ・・ ・・(o_ _)o  コケ

なんかたくさん書きましたけど、これ以外にも細かいトラブルはありました(いや、まだありそうです)

まぁ、今回たまたまAmazonAPIの変更でやむにやまれず着手しましたが、いずれは手をつけなければいけない問題ばかりだったので良い勉強になったなと前向きに考えます!(あれ、なんか目から汗が出てるぞ。。。)

参考:Amazon Product Advertising API への対応(PHP版)–もやし日記