Cronjob Garbage Collector Fehler unter PHP8

Shopware Version 5.7.7 - PHP 8

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.

1 Like

Hallo,

Ein Ticket im Shopware Issuetracker ist sicherlich am besten.

Aber der Support kann auch gut weiterhelfen!

Edit: Der Community Slack Channel kann bei Problemen auch weiter helfen

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.

@sandra.meier.0404 kannst du mal die Fehlermeldungen hier Posten und den ablauf einmal schildern.

Ich würde dazu gern ein Ticket anlegen damit wir das schnell beheben können.

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.

Vielen Dank

Hallo @sandra.meier.0404,

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.

LG

Dennis

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

Hast du denn bei dem Fehler vllt. noch den StackTrace?

Über diesen kann man vllt. Rückschlüsse ziehen

Ü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

Problem wurde mit Shopware Update 5.7.8 behoben.