2016-08-10 24 views
1

AWS S3にアップロードしたファイルのリンクを解除しようとしていますが、パーミッション拒否エラーが続いています。それをS3にアップロードするコードセクションを削除した場合、それは機能します。また、以前にアップロードしたファイルをハードコードすると、リンク解除によってそのファイルが削除されます。私はそれがアップロードされたら、現在のファイルを削除することはできません。ここに掲載されPHP S3アップリンク()で許可が拒否されました

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); 
} 

これは、同様の問題がある:PHP + S3: Permission denied while deleting a file using unlink() 男は、彼がこれは私がAWS S3を使用していて、彼が話していたものを見つけることができなかったの初めてですCentOSの にnginxのサーバー配備を動かすことによってそれを解決したと言います約。友人はこの同じコードを何の問題もなく走らせたので、何が問題になるのか分かりません。これを実行するには完全なファイルアクセスがあり、問題ではないことが分かっている前のファイルとのリンクを解除することができます。

ご協力いただければ幸いです。 ありがとう

答えて

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); 
関連する問題