我为 Amazon s3 创建了一个签名的 $URL,它可以在浏览器中完美打开。
http://testbucket.com.s3.amazonaws.com/100-game-play-intro-1.m4v?AWSAccessKeyId=AKIAJUAjhkhkjhMO73BF5Q&Expires=1378465934&Signature=ttmsAUDgJjCXepwEXvl8JdFu%2F60%3D
**此示例中的存储桶名称和访问密钥已更改
但是,我试图然后使用下面的函数来检查(使用 curl)该文件是否存在。它使 CURL 连接失败。如果我将上面的 $URL 替换为 s3 之外的图像的 url,那么这段代码就可以完美运行。
我知道该文件存在于亚马逊中,但如果使用上述签名的 url,则无法弄清楚为什么此代码会失败
有任何想法吗?
谢谢
这是我的代码。
function remoteFileExists($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//don't fetch the actual file, only get header to check if file exists
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, true);
$result = curl_exec($ch);
curl_close($ch);
if ($result !== false) {
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($statusCode == 200) {
$ret = true;
} else {
$ret = false;
}
} else {
$ret='connection failed';
}
return $ret;
}