2017-06-17 3 views
2

Ich versuche ein Bild mit dem LiipImagineBundle zu konvertieren. Die Datei wird in einem Unterordner storage/ in dem Symfony App-Stammordner und nicht in dem Ordner web/ gespeichert. Dies liegt daran, dass ich vor der Zustellung der Bilder eine benutzerdefinierte Sicherheitsebene angeben muss. Zum Beispiel habe ich ein Bild im Ordner symfony_app/storage/images/image.jpg. Jetzt möchte ich es konvertieren und das gefilterte Bild im Unterordner symfony_app/storage/images/thumbnail/image.jpg speichern.Bild mit LiipImagineBundle konvertieren

Jetzt versuche ich den Code

$imagineController = $this->container->get('liip_imagine.controller'); 
$imagineController->filterAction(new Request(), '/path/to/symfony_app/storage/images/image.jpg', 'thumbnail'); 

aber ich erhalte einen 404-Fehler mit der Meldung "Source image could not be found".

Ich verstehe nicht, warum die Datei nicht gefunden wurde. Ich habe auch versucht, den Befehl console

php bin/console liip:imagine:cache:resolve images/image.jpg 

und das Ergebnis erhalten:

[Imagine\Exception\RuntimeException] 
Unable to open image /path/to/symfony_app/storage/images/image.jpg 

Der storage/ Unterordner, die Zugriffsrechte 777 hat und das ist mein LiipImagine Konfiguration:

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 klingt für mich falsch. Da sich unterhalb der Webroot befindet, kann ich mir vorstellen, dass einige Software den Zugriff auf diese Dateien blockiert. Informieren Sie sich in Ihrer Systemdokumentation über Einschränkungen neben traditionellen Unix-Berechtigungen. – hakre

+0

Ich weiß, dass 777 nicht die beste Idee ist und ich will das in Zukunft ändern. Die App ist auf meinem eigenen Ubuntu-Server. Es gibt keine weiteren Einschränkungen, aber die App wird in einem Andock-Container ausgeführt. Kann das das Problem sein? – mgluesenkamp

+0

Der Andockcontainer kann verschiedene Pfade aufweisen, die den Fehler verursachen könnten. – hakre

Antwort

1

Versuchen Sie, Ihre Einstellung Speicherpfad mit dem Parameter kernel.root_dir.

Wenn Sie den Pfad zum sicheren Bilderordner in Ihrer Sicherheitsebene benötigen, kann es hilfreich sein, ihn als Parameter zu definieren. Verwenden Sie diesen Parameter in der Konfiguration für das LiipImagine-Bundle erneut:

# app/config/config.yml 
parameters: 
    images_root_dir: "%kernel.root_dir%/../storage" 

liip_imagine: 
    loaders: 
     default: 
      filesystem: 
       data_root: "%images_root_dir%"