Symfony2 LiipImagineBundle 路径缓存问题

Symfony2 LiipImagineBundle path cache probleme

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

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/

下生成

我的源文件存储在 U 盘下,我用 server:run 命令启动服务器(所以在 127.0.0.1:8000 下)

但是最近,我在另一台计算机(linux mint 17)下启动了服务器,然后不再生成图像缓存。

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

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

所以我不知道为什么路径中有一个'resolve'

其他,如果我启动命令:

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

路径和图片web/media/cache/dashboard_thumb/uploads/myimage.png制作的很好

为什么这不能自动运行?

谢谢。

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

检查 Symfony Application Configuration and Setup

的文档

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

希望对您有所帮助

... so i dont know why there is a 'resolve' in the path

如果您的图像没有缓存,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

处理

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

有问题,如果您需要在邮件消息中附加图像,您必须先解决图像问题,然后再附加此图像。

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