代码之家  ›  专栏  ›  技术社区  ›  Tarnschaf

php/amazon s3:查询字符串身份验证有时会失败

  •  6
  • Tarnschaf  · 技术社区  · 15 年前

    我用PHP创建了一个简单的文件浏览器,通过生成过期的查询URL链接到文件。因此,对于每个目录的访问,都会生成一个指向每个文件的链接,有效期为900秒。

    我现在有个问题,生成的签名有时似乎会失败。这很奇怪,因为我有意使用外部S3库来生成URL和签名。

    实际上,我尝试了以下库来生成签名:

    库在内部使用hash_hmac(‘sha256’,……或是hash_hmac(‘sha1’,……-我也不明白为什么使用不同的哈希算法。

    由于所有库的问题都是相同的,它也可能出现在我的URL生成代码中,尽管这很简单:

    $bucket = "myBucket";
    $filename = $object->Key;
    $linksValidForSeconds = 900;
    $url = $s3->get_object_url($bucket, $filename, $linksValidForSeconds);
    

    sp$bucket和$linksvalidforseconds是常量,$filename是“media/pictures/my picture.png”。但对于相同的变量,事件有时是有效的,soemtimes则不然。

    有什么想法吗?

    编辑:输入错误/常量变量名固定错误(谢谢)

    3 回复  |  直到 15 年前
        1
  •  3
  •   Tarnschaf    15 年前

        2
  •  1
  •   Josh Smith dfsq    15 年前

    get_object_url() get_object_url ( $bucket, $filename, [ $preauth = 0 ], [ $opt = null ] )

    $linksValidForSeconds

    $preauth strtotime()

    getAuthenticatedURL method integer $lifetime