Probleme auf einer Site mit Magento 2.2.0-rc3.0 / PHP 7.0.23
Das folgende Problem tritt bei allen aktivierten oder deaktivierten Erweiterungen von Drittanbietern auf.
Beim Hinzufügen eines Artikels zum Vergleich von einer Kategorie oder Produktseite oder beim Senden einer Bewertung von einer Produktseite wird der folgende Fehler im Browser angezeigt:
1 exception(s):
Exception #0 (InvalidArgumentException): Unable to unserialize value.
Exception #0 (InvalidArgumentException): Unable to unserialize value.
#0 /home/___/public_html/app/code/Magento/Theme/Controller/Result/MessagePlugin.php(157): Magento\Framework\Serialize\Serializer\Json->unserialize('[{\\"type\\":\\"su...')
#1 /home/___/public_html/app/code/Magento/Theme/Controller/Result/MessagePlugin.php(135): Magento\Theme\Controller\Result\MessagePlugin->getCookiesMessages()
#2 /home/___/public_html/app/code/Magento/Theme/Controller/Result/MessagePlugin.php(84): Magento\Theme\Controller\Result\MessagePlugin->getMessages()
#3 /home/___/public_html/lib/internal/Magento/Framework/Interception/Interceptor.php(146): Magento\Theme\Controller\Result\MessagePlugin->afterRenderResult(Object(Magento\Framework\View\Result\Page\Interceptor), Object(Magento\Framework\View\Result\Page\Interceptor), Object(Magento\Framework\App\Response\Http\Interceptor))
#4 /home/___/public_html/lib/internal/Magento/Framework/Interception/Interceptor.php(153): Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor))
#5 /home/___/public_html/generated/code/Magento/Framework/View/Result/Page/Interceptor.php(26): Magento\Framework\View\Result\Page\Interceptor->___callPlugins('renderResult', Array, Array)
#6 /home/___/public_html/lib/internal/Magento/Framework/App/Http.php(139): Magento\Framework\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#7 /home/___/public_html/lib/internal/Magento/Framework/App/Bootstrap.php(256): Magento\Framework\App\Http->launch()
#8 /home/___/public_html/index.php(39): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
#9 {main}
Der Fehler verschwindet erst, wenn Sie Cookies löschen, insbesondere das Cookie mage-messages.
Hilfe bei der Behebung dieser Fehler wird gebeten.
magento2
magento2.2-dev
unserialize
Futter
quelle
quelle
Antworten:
Ich konnte dieses Problem beheben, indem ich meinen Redis-Cache über die CLI geleert habe
Ich hoffe das hilft zukünftigen Usern.
quelle
Das Problem ist, dass in /vendor/magento/framework/Serialize/Serializer/Json.php eine Funktion unserialize ($ string) vorhanden ist, die einen Syntaxfehler ausgibt, wenn der String serialisiert ist (nicht json, sondern php serialization).
Es gibt eine Problemumgehung: Sie können überprüfen, ob der String serialisiert ist (im Gegensatz zu json-codiert), und dann serialisieren ($ string). Ändern Sie unserialize in:
und füge eine Funktion hinzu, um zu überprüfen, ob der String serialisiert ist:
Nach dem Speichern z. Kategorie ohne Problem, Sie können Klasse auf Standard wiederherstellen und es wird kein solches Problem in Zukunft geben.
quelle
Bearbeiten Sie keine Kerndateien zur Lösung. Override following way Füge einfach die folgende Zeile in die Datei di.xml im Verzeichnis etc ein
Und im Namespace \ ModuleName \ Serialize \ Serializer-Verzeichnis: Datei Json.php
Funktioniert perfekt
quelle
a:0:{}
bis[]
In meinem Fall habe ich wie folgt gepatcht, um einen serialisierten String zu unserialisieren: File: /vendor/magento/framework/Serialize/Serializer/Json.php
Finden:
ersetzt durch:
quelle
Nach dem Spülen von Redis hat sich das Problem sortiert. Vielen Dank, Craig für die Lösung.
Ich verwende Port 6379 für den Cache und führe den folgenden Befehl aus:
quelle
Dies hängt hauptsächlich mit dem Redis-Cache zusammen. Versuchen Sie also, dies mit einem einfachen Befehl in Ihrem SSH zu löschen
redis-cli flushall
quelle
Es stellte sich heraus, dass es sich um ein Berechtigungsproblem handelte, bei dem Magento Berechtigungen für generierte Dateien festlegte, die auf diesem Server beschränkt waren.
Lösung durch Erstellen einer magento_umask-Datei im Stammverzeichnis mit der entsprechenden umask für den Server.
Weitere Informationen finden Sie unter http://devdocs.magento.com/guides/v2.2/install-gde/install/post-install-umask.html .
quelle
Die Antwort von Sameers oben hat bei mir funktioniert, obwohl ich im Block anderen Code verwenden musste.
quelle
Wurzelverzeichnis 1.
public_html/vendor/magento/framework/Serialize/Serializer/Json.php
Laden Sie JSON.php https://gist.github.com/manojind/9f18bbecaeb3e2bbfb056a634ade62a2 herunter
2. Ersetzen Sie einfach die unten stehende Funktion (unserialize) und fügen Sie eine neue Funktion hinzu ODER laden Sie einfach die angehängte Datei herunter und ersetzen Sie sie durch die Standardfunktion
3. Neue Funktion hinzufügen:
quelle
Ich persönlich fand dieses Problem großartig, da es den Befehl ausführt:
Nach einer Migration. Ich habe herausgefunden, dass mir der Hash-Schlüssel " crypt " fehlt in
src/app/etc/env.php
:Stellen Sie sicher, dass dies nicht leer ist und vorzugsweise zu den anderen Umgebungen Ihrer Projekte passt!
quelle
Ich habe den Fehler auf einer CMS-Seite im Frontend erhalten.
Es war der Magento-Widget-Code im CMS-Seiteninhalt, der das Problem verursachte (den ich aus einer anderen Quelle kopiert habe). Ich habe den Widget-Code gelöscht und dasselbe Widget über die Schaltfläche Widget einfügen im Bearbeitungsbildschirm der CMS-Seite eingefügt, und es hat funktioniert.
Der obige Prozess hat den Widget-Code anders formatiert und den Fehler behoben.
quelle
Ich fand heraus, dass ganze serialisierte Daten nicht in eine MySQL-Tabellenspalte mit
TEXT
Datentyp passen .Ich habe gerade festgestellt, dass der Spaltenwert
flag_data
dersystem_config_snapshot
Zeile abgeschnitten ist.Ich musste es
MEDIUMTEXT
für diese Spalte ändernflag.flag_data
.quelle
War der selbe Fehler. Beim Versuch, die Datenbank (Version 2.2.6) mit neuem Code (Version 2.3.2) zu aktualisieren.
Zum fixen Laufen
quelle
Dies ist nicht der beste Weg, um SQL direkt auszuführen, aber ich habe das getan, um meine Zeit zu sparen. Führen Sie einfach diese Abfrage aus
quelle
Wenn Sie Version 2.3.0 oder höher verwenden, möchten Sie die von MageLearner bereitgestellte Lösung verwenden. Der ältere Weg mit case-Anweisungen ist überholt. Wenn Sie die MageLearner-Lösung nicht für 2.3.0 oder höher verwenden; Sie werden auf alle möglichen Probleme stoßen, wenn Sie Auftragsdaten und konfigurierbare Produkte anzeigen.
quelle