所以最近推出了 AWS php sdk 2.x 库,我花了一天时间从 1.5x 升级。我的第一个是升级我的 S3 备份类。我很快遇到了一个错误:
Fatal error: Class 'EntityBody' not found in /usr/share/php/....my file here
尝试将压缩文件上传到 S3 存储桶时。我写了一个类来抽象一点写作以允许多区域备份,所以下面引用 $this 的代码就是这样。
$response1 = $s3->create_object(
$this->bucket_standard,
$this->filename,
array(
'fileUpload' => $this->filename,
'encryption' => 'AES256',
//'acl' => AmazonS3::ACL_PRIVATE,
'contentType' => 'text/plain',
'storage' => AmazonS3::STORAGE_REDUCED,
'headers' => array( // raw headers
'Cache-Control' => 'max-age',
//'Content-Encoding' => 'gzip',
'Content-Language' => 'en-US'
//'Expires' => 'Thu, 01 Nov 2012 16:00:00 GMT'
),
'meta' => array(
'param1' => $this->backupDateTime->format('Y-m-d H:i:s'), // put some info on the file in meta tags
'param2' => $this->hostOrigin
)
)
);
以上在 1.5.x 上运行良好。
现在,在 2.x 中,我正在查看他们的文档,他们几乎改变了一切(伟大的......最大的讽刺)
$s3opts=array('key'=> $this->accessKey, 'secret' => $this->secretKey,'region' => 'us-east-1');
$s3 = Aws\S3\S3Client::factory($s3opts);
所以现在我有了一个新的 S3 对象。这是我的 2.x 语法来做同样的事情。我的问题出现在他们(险恶地)将旧的“文件上传”更改为“正文”并使其在如何实际附加文件方面更加抽象!我已经尝试了这两种方法,我认为它与依赖项(Guzzle 或 Smyfony 等)有关,但每当我尝试执行此操作时,我都会收到上面的错误(或者如果你愿意,可以替换 Stream)。
我已经尝试将 Composer 与 composer.json 和 aws.phar 一起使用,但在我开始之前,我是否缺少一些愚蠢的东西?
$response1 = $s3->putObject(array(
'Bucket' => $this->bucket_standard,
'Key' => $this->filename,
'ServerSideEncryption' => 'AES256',
'StorageClass' => 'REDUCED_REDUNDANCY',
'Body' => EntityBody::factory(fopen($this->filename, 'r')),
//'Body' => new Stream(fopen($fullPath, 'r')),
'MetaData' => array(
'BackupTime' => $this->backupDateTime->format('Y-m-d H:i:s'), // put some info on the file in meta tags
'HostOrigin' => $this->hostOrigin
)
));
一如既往地感谢,
R