2015-09-03 14 views
5

にアップロードされた後にローカルファイルを削除することができません私はAWS S3にそれをアップロードした直後ローカルディレクトリからファイルを削除しようとしています。私がVagrantで実行すると、エラー=テキストファイル:ビジー状態になり、xamppで実行するとエラーが発生します:パーミッションが拒否されました。何らかの理由でAWS S3 PutObjectメソッドがファイルハンドルを解放していません。私はs3オブジェクトの設定を解除しようとしましたが、うまくいきませんでした。ここでLaravelとAWS PHP SDK - それはS3

はコードです:

$tempName = public_path().'/path/to/file' 

    //Initialize AWS 
    $s3 = AWS::createClient('s3'); 


    //Upload image to AWS 

    try { 
     $reponse = $s3->putObject(array(
      'Bucket'  => 'zotamoda', 
      'Key'   => $productImage->image_folder."/".$productImage->image_name, 
      'SourceFile' => $tempName, 
      'ACL'   => 'public-read', 
     )); 
    } catch (S3Exception $e) { 
     // The AWS error code (e.g.,) 
     echo $e->getAwsErrorCode() . "\n"; 
     // The bucket couldn't be created 
     echo $e->getMessage() . "\n"; 
    } 


    //Delete image from temporary location 
    unlink($tempName); 
+0

それは非常にOS依存です、PHPは動作をほとんど制御していません。開発ボックスでそれを動作させても、展開時に動作するわけではありません。一時ファイルを使用するか、cronジョブを使用して削除するほうがよいでしょう。 – wayne

答えて

2

あなたが試みることができる:

Storage::disk('s3')->put($productImage->image_folder."/".$productImage->image_name, file_get_contents($tempName), 'public'); 
unlink($tempName); 

や、$tempNameプロジェクトのルートからの相対であると仮定すると:

Storage::disk('local')->delete($tempName) 
+0

完璧に働いた。ありがとう。 –

関連する問題