代码之家  ›  专栏  ›  技术社区  ›  Chuck Norris

Symfony2 LiipImagineBundle路径缓存问题

  •  1
  • Chuck Norris  · 技术社区  · 10 年前

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

    路由.yml

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

    配置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/上传 路径 工作正常,图像缩略图在 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
    

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

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

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

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

    为什么这不会自动工作?

    谢谢

    2 回复  |  直到 10 年前
        1
  •  1
  •   Matteo    10 年前

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

    检查文档 Symfony Application Configuration and Setup

    PS:您正在查找的命令是chown,但这只是一个变通方法,我建议您修复操作用户层。

    希望这有帮助

        2
  •  0
  •   zalex    7 年前

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

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

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

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

    此外,如果缓存不再生成,则问题可能出现在web服务器配置中。想象一下,YourNginx决定web/media/cache/*是静态内容,因此,路由web/media/cache/resolve无法工作。