Atualizei o site de 2.1.6 para 2.2.1 e não consigo serializar o erro de valor no front-end e no back-end.
{"0":"Unable to serialize value.","1":"#0 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Translate.php(494): Magento\\Framework\\Serialize\\Serializer\\Json->serialize(Array)\n
#1 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Translate.php(190): Magento\\Framework\\Translate->_saveCache()\n
#2 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/App\/Area.php(244): Magento\\Framework\\Translate->loadData(NULL, false)\n
#3 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/App\/Area.php(215): Magento\\Framework\\App\\Area->_initTranslate()\n
#4 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/App\/Area.php(142): Magento\\Framework\\App\\Area->_loadPart('translate')\n
#5 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/View\/DesignLoader.php(55): Magento\\Framework\\App\\Area->load('translate')\n
#6 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/App\/Action\/Plugin\/Design.php(48): Magento\\Framework\\View\\DesignLoader->load()\n
#7 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Interception\/Interceptor.php(121): Magento\\Framework\\App\\Action\\Plugin\\Design->beforeDispatch(Object(Magento\\Cms\\Controller\\Index\\Index\\Interceptor), Object(Magento\\Framework\\App\\Request\\Http))\n
#8 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Interception\/Interceptor.php(153): Magento\\Cms\\Controller\\Index\\Index\\Interceptor->Magento\\Framework\\Interception\\{closure}(Object(Magento\\Framework\\App\\Request\\Http))\n
#9 \/var\/www\/vhosts\/demo.com\/eiselec\/generated\/code\/Magento\/Cms\/Controller\/Index\/Index\/Interceptor.php(39): Magento\\Cms\\Controller\\Index\\Index\\Interceptor->___callPlugins('dispatch', Array, Array)\n
#10 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/App\/FrontController.php(55): Magento\\Cms\\Controller\\Index\\Index\\Interceptor->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n
#11 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Interception\/Interceptor.php(58): Magento\\Framework\\App\\FrontController->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n
#12 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Interception\/Interceptor.php(138): Magento\\Framework\\App\\FrontController\\Interceptor->___callParent('dispatch', Array)\n
#13 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/module-store\/App\/FrontController\/Plugin\/RequestPreprocessor.php(94): Magento\\Framework\\App\\FrontController\\Interceptor->Magento\\Framework\\Interception\\{closure}(Object(Magento\\Framework\\App\\Request\\Http))\n
#14 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Interception\/Interceptor.php(135): Magento\\Store\\App\\FrontController\\Plugin\\RequestPreprocessor->aroundDispatch(Object(Magento\\Framework\\App\\FrontController\\Interceptor), Object(Closure), Object(Magento\\Framework\\App\\Request\\Http))\n
#15 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/module-page-cache\/Model\/App\/FrontController\/BuiltinPlugin.php(73): Magento\\Framework\\App\\FrontController\\Interceptor->Magento\\Framework\\Interception\\{closure}(Object(Magento\\Framework\\App\\Request\\Http))\n
#16 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Interception\/Interceptor.php(135): Magento\\PageCache\\Model\\App\\FrontController\\BuiltinPlugin->aroundDispatch(Object(Magento\\Framework\\App\\FrontController\\Interceptor), Object(Closure), Object(Magento\\Framework\\App\\Request\\Http))\n
#17 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Interception\/Interceptor.php(153): Magento\\Framework\\App\\FrontController\\Interceptor->Magento\\Framework\\Interception\\{closure}(Object(Magento\\Framework\\App\\Request\\Http))\n
#18 \/var\/www\/vhosts\/demo.com\/eiselec\/generated\/code\/Magento\/Framework\/App\/FrontController\/Interceptor.php(26): Magento\\Framework\\App\\FrontController\\Interceptor->___callPlugins('dispatch', Array, NULL)\n
#19 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/App\/Http.php(135): Magento\\Framework\\App\\FrontController\\Interceptor->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n
#20 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/App\/Bootstrap.php(256): Magento\\Framework\\App\\Http->launch()\n
#21 \/var\/www\/vhosts\/demo.com\/eiselec\/index.php(39): Magento\\Framework\\App\\Bootstrap->run(Object(Magento\\Framework\\App\\Http))\n
#22 {main}","url":"\/","script_name":"\/index.php"}
Deixe-me saber como posso resolver isso.
obrigado
Respostas:
Eu tenho o mesmo comportamento com um modelo. Copiei o código do erro no meu serializador para obter meu problema.
Assim que eu mudar para de_DE e gerar novamente meu código estático via
ele lança "caracteres UTF-8 malformados, possivelmente codificados incorretamente".
Então, procurei os arquivos que alterei na pasta do modelo (ou seja, código / Mytheme / Bannerslider / i18n / de_DE.csv) e os baixei via WinSCP. O Notepad ++ mostrou "Ansii Encoding" - foi difícil usar "magento i18n: collect-phrases" para o arquivo de tradução criar.
app / code / MyTheme / Bannerslider / i18n / de_DE.csv US-ASCII
Então, mudei os arquivos manualmente no Notepad ++, enviei-os, implantei o conteúdo estático e redefini todas as permissões - e pronto, ele funciona.
Portanto, o bug pode estar no seu arquivo i18n csv.
fonte
Como posso ver, esse erro vem do método:
O serializador não encontrado vem do método:
A preferência pelo
SerializerInterface
foi adicionada desde a versão 2.2.x do Magento e declarada no aplicativo / etc / di.xml :Acho que seu cache é antigo ou a preferência pelo cache
SerializerInterface
não está funcionando. Tente depurar esse problema chamando oMagento\Framework\Serialize\SerializerInterface
(usando injeção de dependência) em algum lugar no código e verifique qual classe retornou por di:Se ele não retornar uma instância da
Magento\Framework\Serialize\Serializer\Json
classe retornada - tente pesquisar essa preferência substituída no projeto e remova-a.Se você estiver trabalhando no servidor remoto - verifique primeiro o
app/etc/di.xml
arquivo diretamente no servidor.Outra maneira de modificar temporariamente o
Json
serializador principal e verificar qual erro retornou:Abra o
magento/framework/Serialize/Serializer/Json.php
e altere este método de:para:
Depois da mensagem de exceção, você poderá ver um erro json. Pode ser que seus dados estejam com problemas. lembre-se de que todos os dados antigos devem ser desserializados e serializados usando json nos scripts de atualização de instalação durante a atualização do magento.
PS: não se esqueça de reverter os arquivos principais após a depuração concluída! A melhor maneira é usar o xDebug para esse fim.
fonte
No meu caso, a causa de um problema de codificação UTF8 foi o encurtamento não multibyte de nomes de produtos:
Então um
passou a ser
fonte
Tenha cuidado com a função substr. Não suporta UTF-8. E isso pode quebrar o FPC. Use mb_substr
fonte
Eu corri no mesmo problema com a atualização para 2.2.1. Achei este artigo muito útil http://devdocs.magento.com/guides/v2.2/ext-best-practices/tutorials/serialized-to-json-data-upgrade.html
Os dados armazenados no banco de dados não devem mais ser serializados, agora devem ser salvos como um objeto JSON.
A maioria dos módulos faz uma atualização de dados que desserializa os dados no banco de dados e os armazena novamente em um formato JSON. (BTW Demorou um tempo para executar isso ...)
Portanto, se um dos seus módulos salvar dados serializados no banco de dados, que talvez não sejam mais legíveis pelo Magento, você precisará fazer um arquivo de instalação de atualização de dados. Além disso, pode ser um módulo de terceiros que precise ser atualizado para uma versão compatível com 2.2+.
Se você serializar dados não serializados em qualquer lugar do seu código, poderá ser necessário alterá-lo também.
Espero que isso lhe dê uma visão melhor do que está causando esse erro.
Felicidades!
fonte
generation
pasta. ;)Acabei exatamente na mesma situação. Depois de adicionar o código acima, obtive "caracteres UTF-8 malformados, possivelmente codificados incorretamente"
Suponho que você não esteja usando o idioma padrão. Tente alterar o idioma para "padrão" en_US.
Meetanshi - Qual idioma você está usando no front-end e a criação de conteúdo estático também está falhando?
fonte
Para mim, a solução foi substituir todos os caracteres especiais como "ä" no arquivo csv de tradução por versões html do mesmo caractere:
Depois limpei os caches e recarreguei o frontend.
fonte