He actualizado el sitio web de 2.1.6 a 2.2.1 y no puedo serializar el error de valor en el front-end y el 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"}
Déjame saber cómo puedo resolverlo.
Gracias
Respuestas:
Tengo el mismo comportamiento con una plantilla. Copié el código del error en mi serializador para obtener mi problema.
Tan pronto como cambie a de_DE y regenere mi código estático a través de
arroja "caracteres UTF-8 con formato incorrecto, posiblemente codificados incorrectamente".
Así que busqué los archivos que cambié en la carpeta de plantillas (es decir, código / Mytheme / Bannerslider / i18n / de_DE.csv) y los descargué a través de WinSCP. Notepad ++ mostró "Codificación de Ansii", aunque usé "magento i18n: collect-frases" para crear el archivo de traducción.
app / code / MyTheme / Bannerslider / i18n / de_DE.csv US-ASCII
Así que cambié los archivos manualmente en Notepad ++, los cargué, implementé el contenido estático y restablecí todos los permisos, en realidad funciona.
Entonces, el error podría estar en su archivo csv i18n.
fuente
Como puedo ver, este error proviene del método:
y el serializador que no se encuentra proviene del método:
La preferencia por el
SerializerInterface
se agregó desde la versión 2.2.x del Magento, y se declaró en la aplicación / etc / di.xml :Así que creo que su caché es vieja o la preferencia por el
SerializerInterface
no funciona. Intente depurar este problema llamando alMagento\Framework\Serialize\SerializerInterface
(usando inyección de dependencia) en algún lugar del código, y verifique qué clase devuelve di:Si no devuelve una instancia de la
Magento\Framework\Serialize\Serializer\Json
clase devuelta, intente buscar esta preferencia sobrescrita en el proyecto y elimínela.Si está trabajando en el servidor remoto, primero verifique el
app/etc/di.xml
archivo en el servidor directamente.Otra forma en que puede modificar temporalmente el
Json
serializador central y verificar qué error regresó:Abra
magento/framework/Serialize/Serializer/Json.php
y cambie este método de:a:
Luego puede ver después del mensaje de excepción un error json. Puede ser que sus datos estén rotos. tenga en cuenta que todos los datos antiguos no deben ser serializados y serializados utilizando json en los scripts de actualización de la configuración durante la actualización de magento.
PD: ¡ no te olvides de revertir los archivos principales después de completar la depuración! La mejor manera es usar xDebug para ese propósito.
fuente
En mi caso, la causa de un problema de codificación UTF8 fue el acortamiento seguro no multibyte de los nombres de productos:
Entonces un
convirtió
fuente
Tenga cuidado con la función substr. No es compatible con UTF-8. Y esto puede romper el FPC. Use mb_substr
fuente
Me encontré con el mismo problema con la actualización a 2.2.1. Este articulo me pareció muy útil http://devdocs.magento.com/guides/v2.2/ext-best-practices/tutorials/serialized-to-json-data-upgrade.html
Los datos almacenados en la base de datos ya no se deben serializar, ahora se deben guardar como un objeto JSON.
La mayoría de los módulos realizan una actualización de datos que deserializa los datos en la base de datos y los almacena nuevamente en formato JSON. (Por cierto, tomó bastante tiempo ejecutar esto ...)
Por lo tanto, si uno de sus módulos guarda datos que se serializan en la base de datos que Magento ya no podrá leer, deberá hacer un archivo de configuración de actualización de datos. Además, podría ser un módulo de terceros que debe actualizarse a una versión compatible con 2.2+.
Si serializa datos sin serializar en cualquier parte de su código, es posible que también tenga que cambiar eso.
Espero que esto le dé una mejor idea de lo que está causando este error.
¡Salud!
fuente
generation
carpeta. ;)Terminé exactamente a la misma situación. Después de agregar el código anterior, obtuve "caracteres UTF-8 mal formados, posiblemente codificados incorrectamente"
Supongo que no estás usando el idioma predeterminado. Intente cambiar el idioma a "predeterminado" en_US.
Meetanshi: ¿qué idioma está utilizando en el front-end y está fallando la creación de contenido estático?
fuente
Para mí, la solución fue reemplazar todos los caracteres especiales como "ä" en el archivo csv de traducción con versiones html del mismo carácter como este:
Luego borré los cachés y volví a cargar la interfaz.
fuente