Конвертировать изображение с помощью LiipImagineBundle
Я пытаюсь конвертировать изображение с помощью LiipImagineBundle. Файл хранится в подпапке storage/
в корневой папке приложения Symfony, а не в 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');
но я получаю сообщение об ошибке 404 с сообщением "Source image could not be found"
,
Я не понимаю, почему файл не может быть найден. Я также попробовал консольную команду
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 }
1 ответ
Попробуйте установить путь хранения, используя kernel.root_dir
параметр.
Если вам нужен путь к папке с защищенными изображениями в вашем слое безопасности, может быть полезно определить его как параметр. Повторно используйте этот параметр в конфигурации для пакета LiipImagine:
# app/config/config.yml
parameters:
images_root_dir: "%kernel.root_dir%/../storage"
liip_imagine:
loaders:
default:
filesystem:
data_root: "%images_root_dir%"