【发布时间】:2015-11-29 19:43:40
【问题描述】:
我正在尝试在将文件上传到 AWS S3 后立即从本地目录中删除该文件。当我在 Vagrant 上运行它时,我得到一个错误 = Text-file:busy,当我在 xampp 上运行它时,我得到一个错误:permission denied。由于某种原因,AWS S3 PutObject 方法没有释放文件句柄。我尝试取消设置 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);
【问题讨论】:
-
它非常依赖于操作系统,php 对行为几乎没有控制。即使您让它在您的开发框中工作,但这并不意味着它在您部署时也能工作。您最好不时使用临时文件或使用 cron 作业来删除它们。
标签: php laravel amazon-web-services amazon-s3 laravel-5.1