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.