liip_imagine 使用 aws s3 生成错误的缓存 url(liip_imagine、vich_uploader、flysystem)

问题描述 投票:0回答:1

我目前在 liip_imagine 的配置上遇到问题。 我的设置:

  • 交响乐6.4
  • vichuploader 2.3
  • liipimagine 2.12
  • 联赛/飞行系统
  • aws/aws-sdk-php

我首先使用 Flysystem 安装了 vichuploader,并且它可以工作,之后我尝试添加 liipimagine,但生成的 url 不在我的 aws s3 上。

  • 网站域名:mywebsite.com

  • s3 域名:asset.mywebsite.com

  • 从liipimagine生成的url:mywebsite.com/media/cache/resolve/md/facility/photo/big-img-65d760d9afe9a372425826.jpg

这个部分运行良好,我可以上传图像并将其显示在我的树枝上:

vich_uploader.yaml:

vich_uploader:
    db_driver: orm
    storage: flysystem 
    metadata:
            type: attribute
    mappings:   
        facility_photo:
            upload_destination: s3.facility_photo
            uri_prefix: '%asset_s3_url%/facility/photo'
            namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
            inject_on_load: false
            delete_on_update: true
            delete_on_remove: true

flysystem.yaml:

flysystem:
    storages:
        s3.facility_photo:
            adapter: 'aws'
            visibility: public
            options:
                client: 'Aws\S3\S3Client'
                bucket: '%amazon_s3_bucket%'
                prefix: 'facility/photo'
                streamReads: true

services.yaml:

services:
    Aws\S3\S3Client:
        arguments:
            -
                version: "%amazon_s3_version%"
                region: "%amazon_s3_region%"
                endpoint: "https://s3.%amazon_s3_region%.amazonaws.com"
                credentials:
                    key: "%amazon_s3_key%"
                    secret: "%amazon_s3_secret%"

但是我添加了 liipimagine :

liip_imagine:
    resolvers:
        cache_resolver_aws_s3:
            aws_s3:
                client_config:
                    credentials:
                        key:    "%amazon_s3_key%"
                        secret: "%amazon_s3_secret%"
                    region: "%amazon_s3_region%"
                    version: "%amazon_s3_version%"
                bucket: "%amazon_s3_bucket%"
                get_options:
                    Scheme: https
                put_options:
                    CacheControl: "max-age=86400"

    loaders:
        loader_aws_s3:
            flysystem:
                filesystem_service: 's3.facility_photo'

    filter_sets :
        cache: ~

        md:
            data_loader: loader_aws_s3
            cache: cache_resolver_aws_s3
            quality: 100
            filters:
                thumbnail: { size: [120, 90], mode: outbound }

我尝试在我的树枝中添加过滤器“md”:

<img src="{{ vich_uploader_asset(photo, 'imageFile', 'App\\Entity\\PhotoFacility') | imagine_filter('md') }}" />

他不会从 s3 找到 url,而是在我的网站域上找到: mywebsite.com/media/cache/resolve/md/facility/photo/big-img-65d760d9afe9a372425826.jpg

我是否忘记了一些配置? 我遵循了 liipimage 文档

欢迎提供帮助,提前感谢您的合作

symfony amazon-s3 vichuploaderbundle liipimaginebundle flysystem
1个回答
0
投票

我有一个非常相似的设置,除了我使用 oneupFlysystemBundle 代替,但我认为这可能会有所帮助:

我认为你需要将解析器更改为类似的东西

resolvers:
    flysystem_resolver:
        flysystem:
            filesystem_service: s3.facility_photo
            root_url:           '%uploads_base_url%'
            cache_prefix:       media/cache
cache: flysystem_resolver

并从过滤器组中删除

cache
键。

© www.soinside.com 2019 - 2024. All rights reserved.