【问题标题】:Symfony2 LiipImagineBundle path cache problemeSymfony2 LiipImagineBundle 路径缓存问题
【发布时间】:2015-01-31 13:45:31
【问题描述】:

我已经在一台 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 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 都创建得很好

为什么这不能自动工作?

谢谢。

【问题讨论】:

  • 检查linux上的用户权限(apache用户vscli用户)
  • 嗨,感谢您的回答,当我检查网络/媒体/缓存的权限时,我得到了:drwxrwxrwx 1 myname root 0 janv。 31 15:11 web/media/cache/,如何将 apache 设置为该路径的所有者(我是 linux 世界的新手)?
  • 作为临时解决方法,您可以使用chmod -R 777 web/media/cache将所有用户的所有权限设置为缓存文件夹

标签: php symfony liipimaginebundle


【解决方案1】:

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

检查Symfony Application Configuration and Setup的文档

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

希望有帮助

【讨论】:

  • 嗨,我正在尝试第一种方法(因为 chmod +a 似乎不适用于 mint)但是当我检查我的 apache2.conf 时,用户和组值设置为“www-data”,所以通常apache可以访问我的文件夹和文件吗?
  • 好吧,我的错,我正在尝试重新启动服务 apache2,但我忘记重新启动 symfony 服务器(停止并重新启动服务器:运行命令)。所以,现在它似乎完美无缺:)。谢谢大家。
【解决方案2】:

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

如果您的图像没有缓存,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 服务器配置中。想象一下,你的 Nginx 决定 web/media/cache/* 是静态内容,所以路由 web/media/cache/resolve 不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-28
    • 2013-04-12
    • 1970-01-01
    • 2023-03-12
    • 2015-03-05
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    相关资源
    最近更新 更多