Media Manager (Optimizer) - Bilder werden beim Upload nicht optimiert

Hi miteinander,

ich habe da mal ein kleines Problem :slight_smile:

Wenn ich das richtig verstanden habe werden Bilder (Thumbnails) beim Upload über den Media Manager ja direkt per Server Tools (optipng etc.) optimiert.
Leider ist das bei mir nicht der Fall.

Ich habe per Plugin den Optimizer pngquant hinzugefügt (priority=„500“) und der ist auch installiert.

+-----------+----------+-----------------------+
| Optimizer | Runnable | Supported mime-types |
+-----------+----------+-----------------------+
| pngquant | Yes | image/png |
| pngout | No | image/png |
| jpegoptim | Yes | image/jpeg, image/jpg |
| jpegtran | No | image/jpeg, image/jpg |
| optipng | Yes | image/png |
| pngcrush | No | image/png |
| guetzli | No | image/jpeg, image/jpg |
+-----------+----------+-----------------------+

Lasse ich den Optimizer per SSH drüber laufen (bin/console sw:media:optimize) klappt das einwandfrei.
Nur leider nicht direkt beim Upload.
Habe zum Testen mal direkt in die optimize Methode des Shopware\Bundle\MediaBundle\OptimizerService geschrieben und lasse dort eine Datei mit den Parametern erstellen.
Das passiert leider nicht, also gehe ich davon aus, dass der Optimizer gar nicht anläuft.

file_put_contents(Shopware()->DocPath() . '/_OptimizerService.txt', $filepath . "\n", FILE_APPEND);
file_put_contents(Shopware()->DocPath() . '/_OptimizerService.txt', $mime . "\n", FILE_APPEND);
file_put_contents(Shopware()->DocPath() . '/_OptimizerService.txt', print_r($optimizer, true) . "\n", FILE_APPEND);
file_put_contents(Shopware()->DocPath() . '/_OptimizerService.txt', "====================================" . "\n", FILE_APPEND);

Shopware Version ist 5.3.7

Hat jemand eine Idee woran das liegen könnte?

Gruß
Marcel

Habe bereits rausgefunden, dass der Cacheoptimizer hier greift.

Habe mir den mal geloggt. Alle Optimizer geben bei isRunnable false aus, aber warum.
Dann ists klar warum keine Optimierung stattfindet.

Dementsprechen gibts eine OptimizerNotFoundException.

Shopware\Bundle\MediaBundle\CacheOptimizerService Object
(
    [mimeCache:Shopware\Bundle\MediaBundle\CacheOptimizerService:private] => Array
        (
        )

    [optimizerService:Shopware\Bundle\MediaBundle\CacheOptimizerService:private] => Shopware\Bundle\MediaBundle\OptimizerService Object
        (
            [optimizers:Shopware\Bundle\MediaBundle\OptimizerService:private] => Array
                (
                    [0] => QayAdminTools\Optimizer\PngquantOptimizer Object
                        (
                            [isRunnable:Shopware\Bundle\MediaBundle\Optimizer\BinaryOptimizer:private] => 
                        )

                    [1] => Shopware\Bundle\MediaBundle\Optimizer\PngoutOptimizer Object
                        (
                            [isRunnable:Shopware\Bundle\MediaBundle\Optimizer\BinaryOptimizer:private] => 
                        )

                    [2] => Shopware\Bundle\MediaBundle\Optimizer\JpegoptimOptimizer Object
                        (
                            [isRunnable:Shopware\Bundle\MediaBundle\Optimizer\BinaryOptimizer:private] => 
                        )

                    [3] => Shopware\Bundle\MediaBundle\Optimizer\JpegtranOptimizer Object
                        (
                            [isRunnable:Shopware\Bundle\MediaBundle\Optimizer\BinaryOptimizer:private] => 
                        )

                    [4] => Shopware\Bundle\MediaBundle\Optimizer\OptipngOptimizer Object
                        (
                            [isRunnable:Shopware\Bundle\MediaBundle\Optimizer\BinaryOptimizer:private] => 
                        )

                    [5] => Shopware\Bundle\MediaBundle\Optimizer\PngcrushOptimizer Object
                        (
                            [isRunnable:Shopware\Bundle\MediaBundle\Optimizer\BinaryOptimizer:private] => 
                        )

                    [6] => Shopware\Bundle\MediaBundle\Optimizer\GuetzliOptimizer Object
                        (
                            [isRunnable:Shopware\Bundle\MediaBundle\Optimizer\BinaryOptimizer:private] => 
                        )

                )

        )

)

 

Niemand eine Idee? Undecided

*push*

*push*

Wo sind denn die ganzen Profis Sticking-out-tongue

Undecided

Ggf. hat der PHP bzw. Webserver Prozess keine entsprechende Rechte zur Ausführung?

1 Like

Danke schon mal für die Antwort.

Weißt du wie ich das prüfen kann?

U. a. mittels “ls -lsa” kann man sich die Rechte anzeigen lassen. Das sollte ggf der Support vom Hoster machen?!

Dann ruf ich da mal an. Melde mich, was rausgekommen ist.

Danke dir!

Problem ist mittlerweile gelöst. Danke an hhmarco73 für den entsprechenden Hinweis.

Problem war, dass das ‘usr/bin’ Verzeichnis nicht unter open_basedir aufgeführt war, darum konnten die tools nicht ausgeführt werden.

Vielleicht bin ich ja etwas altmodisch, aber usr/bin unter open_basedir aufzunehmen, hört sich für mich wirklich nach einer sicheren Lösung an… wurde das tatsächlich so umgesetzt?

Was soll denn daran nicht so sicher sein?

Wenn man das Feature nutzt, muss man auch PHP sagen welche Verzeichnisse erlaubt sind. Dazu gehört auch der Ordner wo die Optimizer Binaries liegen. Bei den meisten sollte der Parameter auf null sein, somit es alles erlaubt.

 

Wenn usr/bin unter open_basedir aufgeführt ist, wird das Verzeichnis m.E. rekursiv für PHP ausführbar, mit allem was da so drin liegt - somit auch für kompromittierten Code. Ich habe es nun wie folgt erweitert: “/usr/bin/jpegoptim:/usr/bin/optipng”.