Rencontrer des problèmes sur un site en cours d'exécution Rencontrer des Magento 2.2.0-rc3.0 / PHP 7.0.23
Le problème suivant se produit avec toutes les extensions tierces activées ou désactivées.
Lorsque vous ajoutez un article à une comparaison à partir d'une catégorie ou d'une page produit ou que vous soumettez un avis à partir d'une page produit, nous obtenons l'erreur suivante dans le navigateur:
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}
L'erreur ne disparaît que si vous effacez les cookies, en particulier le cookie mage-messages.
Toute aide au dépannage de ces erreurs est appréciée.
magento2
magento2.2-dev
unserialize
Mandrin
la source
la source
Réponses:
J'ai pu résoudre ce problème en vidant mon cache Redis de la CLI
J'espère que cela aidera les futurs utilisateurs.
la source
Le problème est dans /vendor/magento/framework/Serialize/Serializer/Json.php, il y a une fonction unserialize ($ string) qui vous donne une erreur de syntaxe si la chaîne est sérialisée (pas json mais la sérialisation php).
Il existe une solution de contournement - vous pouvez vérifier si la chaîne est sérialisée (par rapport au codage json), puis utiliser la sérialisation ($ chaîne). Modifiez la désérialisation en:
et ajoutez une fonction pour vérifier si la chaîne est sérialisée:
Après avoir enregistré fe. catégorie sans problème, vous pouvez restaurer la classe par défaut et il n'y aura plus de problème à l'avenir.
la source
Ne modifiez pas les fichiers principaux pour la solution. Remplacer la manière suivante Il suffit de mettre la ligne suivante dans di.xml dans le répertoire etc
Et dans Namespace \ ModuleName \ Serialize \ Serializer Directory: fichier Json.php
Fonctionne parfaitement
la source
a:0:{}
la[]
Dans mon cas, j'ai corrigé comme suit pour désérialiser une chaîne sérialisée: Fichier: /vendor/magento/framework/Serialize/Serializer/Json.php
Trouver:
remplacer par:
la source
Après avoir vidé Redis, le problème a été résolu. Merci Craig pour la solution.
J'utilise le port 6379 pour le cache, donc j'exécute la commande:
la source
Il est principalement lié au cache Redis, alors essayez de le vider avec une commande simple dans votre SSH
redis-cli flushall
la source
Il s'est avéré être un problème d'autorisations, où magento définissait des autorisations pour les fichiers générés qui étaient restreints sur ce serveur.
Résolu en créant un fichier magento_umask dans le répertoire racine avec le umask approprié pour le serveur.
Voir http://devdocs.magento.com/guides/v2.2/install-gde/install/post-install-umask.html pour plus de détails.
la source
La réponse de Sameers ci-dessus a fonctionné pour moi, même si j'ai dû utiliser un code différent dans le bloc.
la source
Répertoire ROOT 1.
public_html/vendor/magento/framework/Serialize/Serializer/Json.php
Téléchargez JSON.php https://gist.github.com/manojind/9f18bbecaeb3e2bbfb056a634ade62a2
2. Il suffit de remplacer la fonction ci-dessous (désérialiser) et d'ajouter une nouvelle fonction OU simplement de télécharger le fichier joint et de le remplacer par défaut
3. Ajoutez une nouvelle fonction:
la source
J'ai personnellement trouvé que ce problème provenait de la tête exécutant la commande:
Après une migration. J'ai découvert qu'il me manquait la clé de hachage " crypt " dans
src/app/etc/env.php
:Assurez-vous qu'il n'est pas vide et correspond de préférence aux autres environnements de vos projets!
la source
J'obtenais l'erreur dans une page CMS en frontal.
C'était le code du widget Magento dans le contenu de la page CMS qui posait problème (que j'ai copié à partir d'une autre source). J'ai supprimé le code du widget et inséré le même widget à l'aide du bouton Insérer un widget dans l'écran d'édition de la page CMS et cela a fonctionné.
Le processus ci-dessus a formaté le code du widget différemment et a fait disparaître l'erreur.
la source
J'ai découvert que des données sérialisées entières ne peuvent pas être insérées dans une colonne de table MySQL de base de
TEXT
données avec un type de données.Je viens de découvrir que la
flag_data
valeur de colonne de lasystem_config_snapshot
ligne est coupée.J'ai dû le changer
MEDIUMTEXT
pour cette colonneflag.flag_data
.la source
C'était la même erreur. Lorsque vous essayez de mettre à jour la base de données (ver 2.2.6) avec un nouveau code (ver 2.3.2).
Pour correctif - exécuté
la source
Ce n'est pas la meilleure façon d'exécuter SQL directement mais je l'ai fait pour gagner du temps. Exécutez simplement cette requête
la source
Si vous êtes sur 2.3.0 ou supérieur, vous voudrez utiliser la solution fournie par MageLearner. L'ancienne méthode avec les déclarations de cas est obsolète. Si vous n'utilisez pas la solution de MageLearner sur 2.3.0 ou supérieur; vous rencontrerez toutes sortes de problèmes avec l'affichage des données de commande et des produits configurables.
la source