我正在集成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"
但我不喜欢这个解决方案,有没有人有更好的想法?
答案 0 :(得分:1)
您的上一个解决方案与Symfony本身允许选择使用的DBMS驱动程序或配置缓存后端的方式非常相似。它看起来还不错。
可以在app/config/parameters.yml
中配置与执行环境相关的设置(将choosen_adapter
参数放入其中),这是其存在的原因。
但是,在开发和生产中使用不同的环境会导致奇怪的行为,这通常是一种不好的做法。有些错误可能只出现在生产中,因为使用的是S3而不是本地FS。
您应该尝试尽可能接近开发环境作为生产环境。 S3很便宜(即使你没有存储大量数据也是免费的),如果可能你也应该在开发中使用它。