我正在尝试将AWS S3 / Cloudfront设置为与Symfony中的liipimaginebundle一起使用,但我真的不知道我在做什么。
到目前为止,我已经尝试了以下http://symfony.com/doc/current/bundles/LiipImagineBundle/cache-resolver/aws_s3.html中记录的内容:
已安装aws-sdk-php:
"require": {
"aws/aws-sdk-php": "^3.28",
}
设置我的参数(使用正确的值而不是这个虚拟数据):
amazon.s3.key: "your-aws-key"
amazon.s3.secret: "your-aws-secret"
amazon.s3.bucket: "your-bucket.example.com"
amazon.s3.region: "your-bucket-region"
设置一个解析器(虽然我不确定这甚至意味着什么)。
"%amazon.s3.cache_bucket%"
位于文档中,但参数不存在,因此我改为使用"%amazon.s3.bucket%"
:
liip_imagine:
cache: profile_photos
resolvers:
profile_photos:
aws_s3:
client_config:
credentials:
key: "%amazon.s3.key%"
secret: "%amazon.s3.secret%"
region: "%amazon.s3.region%"
bucket: "%amazon.s3.bucket%"
get_options:
Scheme: https
put_options:
CacheControl: "max-age=86400"
添加以下行以创建服务:
services:
acme.amazon_s3:
class: Aws\S3\S3Client
factory: Aws\S3\S3Client
arguments:
-
credentials: { key: "%amazon.s3.key%", secret: "%amazon.s3.secret%" }
region: "%amazon.s3.region%"
acme.imagine.cache.resolver.amazon_s3:
class: Liip\ImagineBundle\Imagine\Cache\Resolver\AwsS3Resolver
arguments:
- "@acme.amazon_s3"
- "%amazon.s3.bucket%"
tags:
- { name: "liip_imagine.cache.resolver", resolver: "amazon_s3" }
我在运行php bin/console server:run
:
PHP致命错误:未捕获的Symfony \ Component \ Debug \ Exception \ UndefinedFunctionException:尝试从命名空间“Aws \ S3”调用函数“S3Client”。在/var/www/swing-polls/var/cache/dev/appDevDebugProjectContainer.php:360
我已经尝试过其他六个配置/教程无济于事。如果有人能指出我正确的方向,我会非常感激。
使用Simple S3 Symfony Service提供的代码进行一些调整,我已经能够将我的图像上传到我的s3存储桶,但我只是不知道如何让liipimaginebundle与它们一起工作。< / p>
答案 0 :(得分:0)
在vendor / liip / imagine-bundle / DependencyInjection / Compiler / ResolversCompilerPass.php中,您可以看到CompilerPass从&#34; resolver&#34;获取值。标签的属性,并使用它来创建一个Reference对象。这意味着解析器应包含服务的ID。
尝试替换
tags:
- { name: "liip_imagine.cache.resolver", resolver: "amazon_s3" }
与
tags:
- { name: "liip_imagine.cache.resolver", resolver: "acme.amazon_s3" }