【问题标题】:Sonata Media CDN Rackspace奏鸣曲媒体 CDN 机架空间
【发布时间】:2017-08-14 22:12:19
【问题描述】:

我对 Sonata Media 有下一个问题: 我正在尝试使用 Rackspace CDN 上传图片: 根据当前文档,我的配置文件如下所示:

cdn:
    server:
        path: %cdn_url%
filesystem:
    local:
        directory:  %kernel.root_dir%/../web/uploads/media
        create:     false
    rackspace:
        url: %rackspace.opencloud.host%
        secret:
            username: %rackspace.opencloud.username%
            apiKey: %rackspace.opencloud.api_key%
        region: LON
        containerName: projectName
        create_container: false
    replicate:
        master: sonata.media.adapter.filesystem.opencloud
        slave: sonata.media.adapter.filesystem.local

在提供者配置上:

  providers:
    image:
        filesystem: sonata.media.filesystem.replicate
        cdn: sonata.media.cdn.server
        resizer: sonata.media.resizer.square
        allowed_extensions: ['jpg', 'png', 'gif', 'jpeg']
        allowed_mime_types: ['image/pjpeg','image/jpeg','image/png','image/x-png', 'image/gif']

问题是(我是如何发现这个错误的)如果 Rackspace 关闭或在应用程序的每个页面上都提供了不正确的用户名/密码,我会得到这个答案:

Client error response [status code] 401 [reason phrase] Unauthorized [url] https://lon.auth.api.rackspacecloud.com/v2.0/tokens

这是因为 Gaufrette Opencloud 尝试在内核加载时创建连接。

作为临时修复的最快解决方案是创建编译器传递并检查身份验证方法是否返回 false,然后将用于复制定义的参数 0 替换为本地文件系统适配器。

我的问题是:

  1. 如何避免在内核负载上创建 Rackspace 连接?
  2. 如果 Rackspace 出现故障,我如何在 Rackspace 或其他适配器(本地或其他 ftp 服务器)之间进行交换

提前感谢您,如果提供的信息不足,请发表评论。

【问题讨论】:

    标签: symfony sonata-admin sonata rackspace-cloud sonata-media-bundle


    【解决方案1】:

    显然在 Gaufrette 中实现了延迟加载的解决方案:https://github.com/KnpLabs/KnpGaufretteBundle/issues/72

    我所要做的就是:

    sonata.media.adapter.open_stack:
        class: OpenCloud\Rackspace
        arguments: [ %rackspace.opencloud.host%, { username: %rackspace.opencloud.username%, apiKey: %rackspace.opencloud.api_key% }]
    sonata.media.adapter.object_store_factory:
        class: Gaufrette\Adapter\OpenStackCloudFiles\ObjectStoreFactory
        arguments: [ @sonata.media.adapter.open_stack, "LON", ""]
    sonata.media.adapter.filesystem.lazyopencloud:
        class: Gaufrette\Adapter\LazyOpenCloud
        arguments: [ @sonata.media.adapter.object_store_factory, %rackspace.opencloud.container_name%]
    

    并将复制主机更改为 sonata.media.adapter.filesystem.lazyopencloud

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 2013-12-04
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 2018-07-05
      • 2018-10-30
      • 2017-10-11
      • 2015-09-30
      • 2017-11-17
      相关资源
      最近更新 更多