Symfony2 LiipImagineBundle路径缓存问题

时间:2015-01-31 13:45:32

标签: php symfony liipimaginebundle

我在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 / 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

所以我不知道为什么会有一个&#39;解决方案&#39;在路径

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

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

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

查看Symfony Application Configuration and Setup

的文档

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

希望这个帮助

答案 1 :(得分:0)

  

...所以我不知道为什么有一个&#39;决心&#39;在路径

如果您的图片没有缓存,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路由不起作用。