8月15日以降amazonのAWS仕様変更により、SHA256による署名を付与してリクエストしなければならなくなった。そこで、利用しているwp-tmkm-amazonプラグインを少し前に対応版へと変更していたのだが、今週から何故か急に使えなくなってしまった。(wp-tmkm-amazonプラグイン配布)
調べてみると、signatureの生成に失敗している。hash_hmacが入っていないんだろうと思い代替ライブラリを探して、そちらを利用するようにしてみた・・・が、状況が変わらない。(PHP_Compat_Hash)
環境が特殊だったため原因を突き止めるのにだいぶ時間が掛かってしまった。XREAはサーバによって環境が異なるのだが、このページが収容されているs75サーバは、PHP4でありながらhash_hmac()関数が利用できる。しかし、肝心のSHA256アルゴリズムが使えない。・・・なんて中途半端なんだ。有料のくせに! これならhash_hmac()関数が入ってない方がよっぽど対策しやすかった。
まぁ、というわけで上記代替ライブラリを利用しようとしても、既存のhash_hmac()関数と衝突してそのままでは利用できないのである。よって、代替ライブラリに下記のような変更を行って、無理矢理表示できるようにした。
まず、wp-content/plugins/wp-tmkm-amazonの下にPHP_Compat_Hash.tgzを解凍してコピー。~wp-tmkm-amazon/Compat/Function以下に5つファイルができる。その中のhash_hmac.phpを編集。最下部、39,40行目の関数名を以下のように変える。変える関数名はなんでもいいがhash_shmacとした。
if (!function_exists(’hash_hmac‘)) {
function hash_hmac($algo, $data, $key, $raw_output = false)
↓
if (!function_exists(’hash_shmac‘)) {
function hash_shmac($algo, $data, $key, $raw_output = false)
次に、wp-tmkm-amazon-function.phpを編集。190行目付近を以下のように修正。
$signature = base64_encode(
// ** 修正 (2009/6/22)
hash_hmac(’sha256′, $string_to_sign, $tmkm_amazon_settings['secretkey'], true)
↓
if (!function_exists(’hash_shmac’)) {
require ‘Compat/Function/hash_hmac.php’;
}
$signature = base64_encode(
// ** 修正 (2009/6/22)
hash_shmac(’sha256′, $string_to_sign, $tmkm_amazon_settings['secretkey'], true)
これで、無事に動作確認が取れました。
→海外のオススメ格安レンタルサーバを比較しています!!


















No Comment Received
Leave A Reply