PHP unserialize mantiene tirando el mismo error más de 100 veces
-
02-07-2019 - |
Pregunta
Tengo una gran matriz 2d que me serializar y base64_encode y tirar en una base de datos.En una página diferente me tire de la matriz y cuando me base64_decode
el array serializado puedo echo un vistazo y definitivamente se ve válido.
Sin embargo, si intento unserialize(base64_decode($serializedArray))
simplemente tira el mismo error hasta el punto de casi estrellarse Firefox.
El error es:
Advertencia:
unserialize()
[función.unserialize]:Nodo ya no existe en /var/www/dev/wc_paul/inc/analyzerTester.php en la línea 24
Habría que incluir la totalidad del array serializado que me echo a cabo, pero la última vez que traté de que en este formulario se estrelló mi Firefox.
¿Alguien tiene alguna idea de por qué esto podría estar sucediendo?
Solución
Son estás seguro de lo que acaba de registrar una matriz, y no un objeto (por ejemplo,DOMNode?) Como los recursos, no en todas las clases van a ser felices con ser deserializada.Como un ejemplo con el DOM (que tu error me sugiere usted está trabajando), cada nodo tiene una referencia a la parentNode, y si el parentNode no existe en el momento en que un nodo que se está deserializada, no es capaz de recrear de referencia y de presentarse problemas.
Yo sugeriría guardar el árbol dom XML a la base de datos y carga de nuevo más tarde.
Otros consejos
Asegúrese de que el campo de base de datos es lo suficientemente grande para almacenar el array serializado.Datos serializados es muy espacio ineficientes en PHP, y muchos DBs (como MySQL) silenciosamente truncar los valores de campo que son demasiado largos.
¿Qué tipo de elementos se encuentran en la matriz?serializar/unserialize no funciona con construido-en objetos de PHP, y que suele ser la causa de ese error.
También, con base en su comentario, este no es tu problema, pero para ahorrar espacio en la base de datos no base64 codificar los datos, acaba de escapar de ella.es decir,para mysql uso mysql_real_escape_string.
Asegúrese de que usted no serializar los recursos, que no pueden ser serializados.