Ani, benim Amazon S3 HTTP istekleri Tüm çalışmıyor.

1 Cevap php

Benim kod bir kaç gün önce gayet güzel çalışıyordu. Sonra, birdenbire, BAM bütün: çalışma durduruldu. Benim koyar SignatureDoesNotMatch hata ile geçiyor durdu. Yardım?

require_once 'Crypt/HMAC.php';
require_once 'HTTP/Request.php';


function uploadFile($path_to_file, $store_file_as, $bucket, $debugmode = false) {

        $S3_URL = "http://s3.amazonaws.com/";
        $filePath = $path_to_file;
        $contentType = 'audio/mpeg';
        $keyId = 'THISISMYKEY, YES I DOUBLE CHECKED IT';
        $secretKey = 'THIS IS MYSECRET, YES I DOUBLED CHECKED IT';
        $key = $store_file_as;
        $resource = $bucket . "/" . $key;
        $acl = "public-read";
        $verb = "PUT";
    $httpDate = gmdate("D, d M Y H:i:s T");
    $stringToSign = "PUT\n\naudio/mpeg\n$httpDate\nx-amz-acl:$acl\n/$resource";
    $hasher =& new Crypt_HMAC($secretKey, "sha1");
    $str =  $hasher->hash($stringToSign);
    $raw = '';
    for ($i=0; $i < strlen($str); $i+=2) {
        $raw .= chr(hexdec(substr($str, $i, 2)));
    }
    $signature = base64_encode($raw);

    $req =& new HTTP_Request($S3_URL . $resource);
    $req->setMethod('PUT');
    $req->addHeader("content-type", $contentType);
    $req->addHeader("Date", $httpDate);
    $req->addHeader("x-amz-acl", $acl);
    $req->addHeader("Authorization", "AWS " . $keyId . ":" . $signature);
    $req->setBody(file_get_contents($filePath));  
    $req->sendRequest();
   echo $req->getResponseBody();
   }

1 Cevap

Amazon S3 JavaScript signature tester karşı imzanızı çalıştırın.

Iki imza uyuşmuyorsa, bir şey tuşları veya imzalama işlemi ile yanlış olduğunu biliyorum.

İki maç ise, anahtarlar ve imzalama işlemi doğru ve sorun başka yerde.

JS test giderme imza oluşturma sorunlar için paha biçilemez.