OneupFlysystemBundle :如何在开发者之间拥有不同的适配器。和产品

OneupFlysystemBundle : how to have different adapters between dev. and prod

我正在集成 OneupFlysystemBundle,我想知道如何在我的开发 PC 上使用 local 适配器,在生产服务器上使用 awss3v3

我已经这样做了,但是没有成功(它总是使用本地):

oneup_flysystem:
    adapters:
        default_adapter:
            local:
                directory: %flysystem.local_adapter.directory%
            awss3v3:
              client: flysystem_clients.s3
              bucket: "%flysystem.s3_client.foo.bucketName%"
              prefix: "foo/"


    filesystems:
        default:
            adapter: default_adapter

我认为我可以使用以下方法让它工作:

oneup_flysystem:
    adapters:
        default_local_adapter:
            local:
                directory: %flysystem.local_adapter.directory%
        default_s3_adapter:
            awss3v3:
              client: flysystem_clients.s3
              bucket: "%flysystem.s3_client.foo.bucketName%"
              prefix: "foo/"


    filesystems:
        default:
            adapter: "%choosen_adapter%" # choosen_adapter value beeing either "default_local_adapter" or "default_s3_adapter"

但我不喜欢这个解决方案,有没有人有更好的主意?

您的最后一个解决方案与 Symfony 本身允许选择要使用的 DBMS 驱动程序或配置缓存后端的方式非常相似。看起来不错。

执行环境相关的设置可以在app/config/parameters.yml中进行配置(把choosen_adapter参数放在里面),之所以如此。

但是,在开发和生产中使用不同的环境通常是一种不好的做法,会导致奇怪的行为。由于使用了 S3 而不是本地 FS,因此某些错误可能仅在生产中出现。

您应该尝试在尽可能接近生产环境的开发环境中工作。 S3 很便宜(即使是免费的,你也不会存储很多数据),如果可能的话,你也应该在开发中使用它。