Fehler 500 - Redis6Proxy::hSet must be compatible with Redis::hSet

Fehlermeldung

AH01071: Got error 'PHP message: PHP Fatal error: 

Declaration of Symfony\\Component\\Cache\\Traits\\Redis6Proxy::hSet($key, $member, $value): 
Redis|int|false must be compatible with Redis::hSet(string $key, mixed ...$fields_and_vals): 
Redis|int|false in /var/www/vhosts/creoline-demo.com/httpdocs/vendor/symfony/cache/Traits/Redis6Proxy.php 
on line 519'


Das Problem entsteht durch die zuletzt veröffentlichten PHP Updates. Betroffen sind hier PHP 8.1, 8.2 und 8.3. In dem Minor-Update für die phpredis Integration wurde die Methodensignatur angepasst. Das in Shopware verwendete Composer Paket symfony/cache ist mit diesem Update inkompatibel und muss aktualisiert werden.



Problembehebung

Lösung 1)

Führen Sie ein Shopware Update auf die Version 6.6.4.0 durch.


Quelle:

Shopware hat in der Version 6.6.4.0 das Symfony/cache Paket auf die erforderliche Version 7.1.1 aktualisiert.

https://github.com/shopware/shopware/blob/v6.6.4.0/composer.json


Lösung 2)

Sofern ein Shopware Update zum aktuellen Zeitpunkt nicht möglich ist, kann die inkompatible Methodensignatur korrigiert werden. Öffnen Sie hierzu die Datei:

/var/www/vhosts/creoline-demo.com/httpdocs/vendor/symfony/cache/Traits/Redis6Proxy.php


und ersetzen Sie die hSet Methode wie folgt:

// Backup der bisherigen Methode:
//public function hSet($key, $member, $value): \Redis|false|int
//{
//    return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hSet(...\func_get_args());
//}

// Implementierung der neuen hSet Methode:
public function hSet($key, ...$fields_and_vals): \Redis|false|int {
   return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hSet(...\func_get_args());
}


Alternativ können Sie die Datei auch über das Dateisystem durch unsere Patch-Version ersetzen:

https://dl.creoline.com/space/shopware-6-patches


Ersetzen Sie die Redis6Proxy.php Datei in dem Verzeichnis:

/var/www/vhosts/<ihre-domain.de>/httpdocs/vendor/symfony/cache/Traits/Redis6Proxy.php


Anschließend funktioniert die Redis Verbindung wieder einwandfrei.


Sollten Sie trotz Anpassung weiterhin die Fehlermeldung erhalten, wenden Sie sich bitte an unseren Support.

Kontakt aufnehmen