Seit dem Umstieg auf PHP8 bringen die Cronjobs Media Garbage Collector, sowie der Cronjob des Shopware Original Plugins CustomProducts Hash GarbageCollector ein array Error.
Vielleicht kann man das irgendwo in der todo Liste aufnehmen?
Custom Products V2 ist ja ein nicht gerade günstiges Premium-Plugin von Shopware selber. Ich würde da mal beim Support eine Mängelrüge aussprechen und - einzig richtige Stelle - einen Eintrag unter https://issues.shopware.com/ machen. Meldungen im Forum finden in Schöppingen eher kein Gehör.
Formal ist der Issuetracker die erste Anlaufstelle. Aber alle, die sich schon ein paar Jahre mit Shopware rumschlagen, wissen, dass der Issuetracker eher ein großes, belangloses WünschDirWas-Märchenbuch ist.
Custom Prodcuts kostet im Gegensatz zur PE jährlich eine Menge Geld. Wenn das Produkt unter der aktuellen PHP8-Umgebung nicht funktioniert, dann ist das ein Produktmangel, der unverzüglich zu beheben ist. Da ist dann die Bugtracker-Farce ganz und gar die falsche Stelle.
Custom Products (V1 und V2) waren schon immer eine unglaubliche Bugseuche.
Prima vielen Dank - habe für Custom Products jetzt den Support kontaktiert.
Die Fehlermeldung des Cronjobs Media Garbage Collectors ist:
array (
‚error‘ => ‚preg_match(): Argument #2 ($subject) must be of type string, array given‘,
)
Im Shopablauf gibt es keine Probleme. Die nicht genutzten Bilder können auch noch per Konsole in den Papierkorb verfrachtet werden, wenn dort PHP 7.4 eingestellt ist.
Nur die Ausführung des Cronjobs Shopware_CronJob_MediaCrawler im Shopsystem 5.7.7 unter PHP8 gibt diese Fehlermeldung aus und legt natürlich keine Bilder in den Papierkorb.
Ist kein dringendes Problem, da alles andere funktioniert.
ich habe versucht das Problem nachzustellen, bei mir läuft alles durch. Hast du denn auch jeweils die PHP8 kompatiblen versionen installiert? Oder kann es sein, das ein DrittPlugin
diesen Fehler verursacht? Jedes Plugin kann sich in diesem Prozess einhängen.
Habe im Pluginmanager den Sicherheitsmodus aktiviert und alle Drittanbieter Plugins deaktiviert.
Aber kein Erfolg.
Ansonsten läuft ja alles, nur der Cronjob funktioniert nicht.
Ist nicht weiter schlimm, da ich die Bilder auch händisch über die Konsole löschen kann.
Werde aber weiter suchen…
Danke
Über das Backend bekomme ich nur diesen Array Fehler.
Wenn ich den Media Garbage Collector unter php74 über SSH-Konsole ausführe, funktioniert es reibungslos. Switche ich in der Konsole zu php8 bekomme ich folgende Fehlermeldung (Pfade habe ich geXt.)
ssh-XXXXX php bin/console sw:media:cleanup
Searching for unused media files.
PHP Fatal error: Uncaught TypeError: preg_match(): Argument #2 ($subject) must be of type string, array given in XXXXXXX/Bundle/MediaBundle/Strategy/Md5Strategy.php:45
Stack trace: #0 XXXXXXX/Bundle/MediaBundle/Strategy/Md5Strategy.php(45): preg_match(‚/.((media\/(?:…‚, Array, NULL) #1 XXXXXXX/Bundle/MediaBundle/MediaService.php(201): XXXXXXX\Bundle\MediaBundle\Strategy\Md5Strategy->normalize(Array) #2 XXXXXXX/Bundle/MediaBundle/GarbageCollector.php(289): XXXXXXX\Bundle\MediaBundle\MediaService->normalize(Array) #3 XXXXXXX/Bundle/MediaBundle/GarbageCollector.php(199): XXXXXXX\Bundle\MediaBundle\GarbageCollector->addMediaByPath(Array) #4 XXXXXXX/Bundle/MediaBundle/GarbageCollector.php(141): XXXXXXX\Bundle\MediaBundle\GarbageCollector->handleSerializeTable(Object(XXXXXXX\Bundle\MediaBundle\Struct\MediaPosition)) #5 XXXXXXX/Bundle/MediaBundle/GarbageCollector.php(79): XXXXXXX\Bundle\MediaBundle\GarbageCollector->find(Object(XXXXXXX\Bundle\MediaBundle\Struct\MediaPosition)) #6 XXXXXXX/Bundle/MediaBundle/Commands/MediaCleanupCommand.php(134): XXXXXXX\Bundle\MediaBundle\GarbageCollector->run() #7 XXXXXXX/Bundle/MediaBundle/Commands/MediaCleanupCommand.php(60): XXXXXXX\Bundle\MediaBundle\Commands\MediaCleanupCommand->handleMove() #8 XXXXXXXvendor/symfony/console/Command/Command.php(255): XXXXXXX\Bundle\MediaBundle\Commands\MediaCleanupCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #9 XXXXXXXvendor/symfony/console/Application.php(1009): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #10 XXXXXXX/Components/Console/Application.php(131): Symfony\Component\Console\Application->doRunCommand(Object(XXXXXXX\Bundle\MediaBundle\Commands\MediaCleanupCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #11 XXXXXXXvendor/symfony/console/Application.php(273): XXXXXXX\Components\Console\Application->doRunCommand(Object(XXXXXXX\Bundle\MediaBundle\Commands\MediaCleanupCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #12 XXXXXXX/Components/Console/Application.php(110): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #13 XXXXXXXvendor/symfony/console/Application.php(149): XXXXXXX\Components\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #14 XXXXXXXbin/console(38): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput)) #15 {main}
thrown in XXXXXXX/Bundle/MediaBundle/Strategy/Md5Strategy.php on line 45
ssh-XXXXXXX$ PHP Fatal error: Uncaught TypeError: preg_match(): Argument #2 ($subject) must be of type string, array given in XXXXXXX/Bundle/MediaBundle/Strategy/Md5Strategy.php:45
bash: syntax error near unexpected token `(‘
ssh-XXXXXXX$ Stack trace:
bash: Stack: command not found
ssh-XXXXXXX$ #0 XXXXXXX/Bundle/MediaBundle/Strategy/Md5Strategy.php(45): preg_match('/.((media\/(?:…‘, Array, NULL)
ssh-XXXXXXX$ #1 XXXXXXX/Bundle/MediaBundle/MediaService.php(201): XXXXXXX\Bundle\MediaBundle\Strategy\Md5Strategy->normalize(Array)
ssh-XXXXXXX$ #2 XXXXXXX/Bundle/MediaBundle/GarbageCollector.php(289): XXXXXXX\Bundle\MediaBundle\MediaService->normalize(Array)
ssh-XXXXXXX$ #3 XXXXXXX/Bundle/MediaBundle/GarbageCollector.php(199): XXXXXXX\Bundle\MediaBundle\GarbageCollector->addMediaByPath(Array)
ssh-XXXXXXX$ #4 XXXXXXX/Bundle/MediaBundle/GarbageCollector.php(141): XXXXXXX\Bundle\MediaBundle\GarbageCollector->handleSerializeTable(Object(XXXXXXX\Bundle\MediaBundle\Struct\MediaPosition))
ssh-XXXXXXX$ #5 XXXXXXX/Bundle/MediaBundle/GarbageCollector.php(79): XXXXXXX\Bundle\MediaBundle\GarbageCollector->find(Object(XXXXXXX\Bundle\MediaBundle\Struct\MediaPosition))
ssh-XXXXXXX$ #6 XXXXXXX/Bundle/MediaBundle/Commands/MediaCleanupCommand.php(134): XXXXXXX\Bundle\MediaBundle\GarbageCollector->run()
ssh-XXXXXXX$ #7 XXXXXXX/Bundle/MediaBundle/Commands/MediaCleanupCommand.php(60): XXXXXXX\Bundle\MediaBundle\Commands\MediaCleanupCommand->handleMove()
ssh-XXXXXXX$ #8 XXXXXXXvendor/symfony/console/Command/Command.php(255): XXXXXXX\Bundle\MediaBundle\Commands\MediaCleanupCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
ssh-XXXXXXX$ #9 XXXXXXXvendor/symfony/console/Application.php(1009): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
ssh-XXXXXXX$ #10 XXXXXXX/Components/Console/Application.php(131): Symfony\Component\Console\Application->doRunCommand(Object(XXXXXXX\Bundle\MediaBundle\Commands\MediaCleanupCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
ssh-XXXXXXX$ #11 XXXXXXXvendor/symfony/console/Application.php(273): XXXXXXX\Components\Console\Application->doRunCommand(Object(XXXXXXX\Bundle\MediaBundle\Commands\MediaCleanupCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
ssh-XXXXXXX$ #12 XXXXXXX/Components/Console/Application.php(110): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
ssh-XXXXXXX$ #13 XXXXXXXvendor/symfony/console/Application.php(149): XXXXXXX\Components\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
ssh-XXXXXXX$ #14 XXXXXXXbin/console(38): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput))
ssh-XXXXXXX$ #15 {main}
ssh-XXXXXXX$ thrown in XXXXXXX/Bundle/MediaBundle/Strategy/Md5Strategy.php on line 45
bash: thrown: command not found