OneupFlysystemBundle:如何在dev之间使用不同的适配器。和刺激

时间:2017-05-31 16:09:11

标签: php symfony production-environment test-environments flysystem

我正在集成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"

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

1 个答案:

答案 0 :(得分:1)

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

可以在app/config/parameters.yml中配置与执行环境相关的设置(将choosen_adapter参数放入其中),这是其存在的原因。

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

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