【发布时间】:2017-06-17 16:51:25
【问题描述】:
我尝试使用 LiipImagineBundle 转换图像。该文件存储在 symfony 应用根文件夹中的子文件夹 storage/ 中,而不是 web/ 文件夹中。这是因为我必须在交付图像之前使用自定义安全层。
例如,我在文件夹symfony_app/storage/images/image.jpg 中有一张图片。现在我想转换它并将过滤后的图像保存在子文件夹symfony_app/storage/images/thumbnail/image.jpg中。
现在我试试代码
$imagineController = $this->container->get('liip_imagine.controller');
$imagineController->filterAction(new Request(), '/path/to/symfony_app/storage/images/image.jpg', 'thumbnail');
但我收到消息 "Source image could not be found" 的 404 错误。
我不明白为什么找不到该文件。我也试过控制台命令
php bin/console liip:imagine:cache:resolve images/image.jpg
并得到结果:
[Imagine\Exception\RuntimeException]
Unable to open image /path/to/symfony_app/storage/images/image.jpg
storage/ 子文件夹的访问权限为 777,这是我的 LiipImagine 配置:
liip_imagine:
loaders:
default:
filesystem:
data_root: /var/www/actus-backend/storage/
resolvers:
default:
web_path: ~
filter_sets:
cache: ~
thumbnail:
quality: 75
filters:
thumbnail: { size: [100, 100], mode: outbound }
【问题讨论】:
-
777 对我来说听起来不对。由于它位于 webroot 之下,我可以想象某些软件会阻止对这些文件的访问。请查阅您的系统文档,了解传统 Unix 权限旁边的限制。
-
我知道 777 不是最好的主意,我想在未来改变它。该应用程序位于我自己的 ubuntu 服务器上。没有其他限制,但应用程序在 docker 容器中运行。这可能是问题吗?
-
docker 容器可能有不同的路径,这可能是罪魁祸首。
-
你用的是 Apache 还是 Nginx?
-
我也遇到了同样的问题,你解决了吗?
标签: php symfony liipimaginebundle