Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试列出Devpay S3存储桶-获取;“签名不匹配”;错误_Php_Amazon S3 - Fatal编程技术网

Php 尝试列出Devpay S3存储桶-获取;“签名不匹配”;错误

Php 尝试列出Devpay S3存储桶-获取;“签名不匹配”;错误,php,amazon-s3,Php,Amazon S3,我想做什么: 我正在尝试列出Devpay S3存储桶 我使用的参考资料: 1. 2. 3. 我是怎么做的: 使用PHP libcURL库的简单REST GET请求: GET / HTTP/1.1 Host: s3.amazonaws.com Date: $date X-Amz-Date: $date X-Amz-Security-Token: $userToken, $productToken Authorization: $signatureValue 在哪里 这根绳子- GET\n

我想做什么:
我正在尝试列出Devpay S3存储桶

我使用的参考资料:
1.
2.
3.

我是怎么做的:
使用PHP libcURL库的简单REST GET请求:

GET / HTTP/1.1
Host: s3.amazonaws.com
Date: $date
X-Amz-Date: $date
X-Amz-Security-Token: $userToken, $productToken
Authorization: $signatureValue
在哪里

这根绳子-

GET\n
""\n
""\n
$date\n
$canonicalized_AMZ_Headers\n
/ 
我正在使用
curl\u exec()
执行GET请求

我收到的错误:

“签名不匹配”
“我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法”

谢谢

非常感谢S3返回的错误消息中的任何帮助将是StringToSign元素(使用View Source可以更清楚地看到它)。仔细将其与您为签署请求而附加在一起的字符串进行比较-它们必须完全相同。

S3返回的要签署的字符串中没有
$date
。。。所以我把它拿走了。比较my
$stringToSign
和Amazon返回的stringToSign,两者似乎相同;不幸的是,错误也是如此:(签名的S3 URL应该始终包含过期时间。过期时间还需要设置为查询参数。有关确切的详细信息,请参阅。我不是PHP人员(也不是Devpay人员!),但AWS确实提供了一个可以处理大部分muck.HTH的。谢谢Uriah-我没有使用签名URL。我通过排除x-amz-date头并包含一个常规的
“date:…”来解决这个问题
header。另外,当不是标准化形式时,需要单独列出这两个安全令牌。另外,不幸的是,php sdk不能与devpay s3 bucket一起工作:(-感谢您的所有输入
GET\n
""\n
""\n
$date\n
$canonicalized_AMZ_Headers\n
/