2017-06-17 10 views
2

LiipImagineBundleで画像を変換しようとしています。ファイルはweb/フォルダではなく、symfonyアプリケーションルートフォルダのサブフォルダstorage/に保存されています。これは、イメージを配信する前にカスタムセキュリティレイヤーをウィットにする必要があるためです。LiipImagineBundleで画像を変換する

たとえば、フォルダ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 } 
+0

777私に間違った音がします。それがWebrootの下にあるので、私はいくつかのソフトウェアがこれらのファイルへのアクセスをブロックしていると想像することができます。 traditonal Unix権限の横にある制限については、システムのマニュアルを参照してください。 – hakre

+0

私は777がベストアイデアではないことを知っています。将来これを変更したいと思います。アプリは私自身のubuntuサーバーにあります。他の制限はありませんが、アプリケーションはドッカーコンテナで実行されています。これが問題になるかもしれませんか? – mgluesenkamp

+0

ドッカーコンテナには異なるパスが存在する可能性があります。 – hakre

答えて

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%" 
関連する問題