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 不起作用。
我已经在 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 不起作用。