上行链路()拒绝PHP S3权限

时间:2016-08-10 03:34:27

标签: php amazon-web-services amazon-s3

我尝试在将文件上传到AWS S3后取消链接,但我一直收到Permission denied错误。如果我删除代码部分将其上传到S3,那么它的工作原理。此外,如果我硬编码我之前上传的文件,unlink将删除该文件。一旦上传,我无法删除当前文件。

if(isset($_FILES['file'])){
//Get File
$file = $_FILES['file'];
$name = $file['name'];
$tmp_name = $file['tmp_name'];
//Get extension
$ext = explode('.', $name);
$ext = strtolower(end($ext));
//create unique name for file
$key = md5(uniqid());
//create temp
$temp_file_name = "{$key}.{$ext}";
$temp_file_path = "uploads/{$temp_file_name}";
//move to local folder
move_uploaded_file($tmp_name, $temp_file_path);
//    upload to s3
try{
    $s3->putObject([
        'Bucket'    => $config['s3']['bucket'],
        'Key'       => "uploads/{$name}",
        'Body'      => fopen($temp_file_path, 'rb'),
        'ACL'       => 'public-read'
    ]);
} catch (S3Exception $e){
    die("There was some type of uploading issue " . $e->getMessage());
}
unlink($temp_file_path);
}

这是与此处发布的类似问题:https://docs.oracle.com/javase/8/docs/api/java/lang/String.html 这家伙说他通过将nginx服务器部署移动到CentOS来解决这个问题 这是我第一次使用AWS S3而无法找到他在说什么。一位朋友毫无困难地运行了相同的代码,所以我不确定是什么问题。有完整的文件访问权限可以运行,并且可以取消链接以前的文件,我知道这不是问题。

任何帮助将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

原来我需要使用fclose()。

$body = fopen($temp_file_path, 'rb');

然后:

$s3->putObject([
        'Bucket'    => $config['s3']['bucket'],
        'Key'       => "uploads/{$name}",
        'Body'      => $body,
        'ACL'       => 'public-read'
 ]);

之后:

 fclose($body);

 unlink($temp_file_path);