首页 文章

Symfony2 LiipImagineBundle路径缓存问题

提问于
浏览
1

我在linux计算机上设置了一个LiipImagineBundle配置(xubuntu 14.10):

使用routing.yml

_liip_imagine:
    resource: "@LiipImagineBundle/Resources/config/routing.xml"

config.yml

liip_imagine:
    resolvers:
       default:
          web_path: ~

    filter_sets:
        cache: ~
        dashboard_thumb:
            quality: 75
            filters:
                thumbnail: { size: [60, 60], mode: outbound }

在我的树枝模板中:

<img src="{{ asset(company.logo.getPath) | imagine_filter('dashboard_thumb') }}">

所有源图像都在 web/uploads 路径下这工作正常,图像缩略图是在 web/media/cache/dashboard_thumb/uploads/ 下生成的

我的源文件存储在USB记忆棒下,我用服务器来运行服务器:运行commande(所以在127.0.0.1:8000下)

但最近,我将服务器置于另一台计算机(linux mint 17)之下,然后,不再生成图像缓存 .

当我查看生成的html源代码时,图像的文件路径是:

http://127.0.0.1:8000/media/cache/resolve/dashboard_thumb/uploads/myimage.png

所以我不知道为什么路上会有“决心”

其他的事情,如果我启动命令:

liip:imagine:cache:resolve uploads/myimage.png

路径和图像web / media / cache / dashboard_thumb / uploads / myimage.png创建得很好

为什么这不会自动起作用?

谢谢 .

2 回答

  • 1

    似乎有关设置权限的问题 . 基本上,CLI(和部署)和Web服务器的系统操作用户必须位于同一组中 .

    检查Symfony Application Configuration and Setup的文档

    PS:您正在寻找的命令是chown,但只是一种解决方法,我建议您修复操作用户层 .

    希望这有帮助

  • 0

    ...所以我不知道为什么路上会有“决心”

    如果您的图像没有缓存, LiipImagineBundle (在您的情况下为 imagine_filter )会根据此规则生成路由

    liip_imagine_filter:
        path: /media/cache/resolve/{filter}/{path}
        defaults:
            _controller: '%liip_imagine.controller.filter_action%'
        methods:
            - GET
        requirements:
            filter: '[A-z0-9_-]*'
            path: .+
    

    ,并且您的请求由 ImagineController https://github.com/liip/LiipImagineBundle/blob/1.0/Controller/ImagineController.php处理

    所以,你看不到图像路径,而是路径 . Controller生成缓存,您对该图像的第二个请求将为您提供实际的图像路径 .

    有一个问题,如果您需要将图像附加到邮件消息,则必须在附加图像之前解析图像 .

    此外,如果缓存不再生成,则问题可能出在Web服务器配置中 . 想象一下,你的Nginx决定web / media / cache / *是静态内容,因此,web / media / cache / resolve路由不起作用 .

相关问题