PHP unserialize: Serialized String debugging
Heute ein kurzer Beitrag zum Thema PHP serialize.
Heute hatte ich mit dem Problem zu kämpfen, ein beschädigtes, serialisiertes Array zu reparieren.
Das Array war zuvor per serialize();
in einen serialisierten String umgewandelt worden. Ein Modul hatte dann leider die enthaltenen URLs geändert, sodass die Prüfsummen der enthaltenen Textlängen nicht mehr passten.
Damit sind die Tripel gemeint, in denen PHP die Werte ablegt:
s:8:"cell_0_1"
Der zweite Wert gibt die Länge des Strings (dritter Wert) an und muss diesem entsprechen, um gültig zu sein. Dies erlaubt beispielsweise auch, dass Anführungszeichen innerhalb des Wertes vorhanden sind und nicht maskiert werden müssen.
Um herauszufinden wo der Fehler liegt, müsst ihr einfach nur die Ausgabe der PHP "E_NOTICE"-Meldungen aktivieren.
Dies könnt ihr in eurem Testscript folgendermaßen umsetzen:
Der Parser gibt euch dann einen Tipp, an welcher Stelle (Offset) ihr das Problem findet.
"unserialize" liefert übrigens bei einem Fehler einfach "false" zurück!
Hinweis: Achtet zudem darauf, dass der "display_errors"-Wert passt Sonst könnt ihr lange nach der Ausgabe suchen.
Alternativ könnt ihr auch das Logging von E_NOTICE-Meldungen verwenden, um keine Ausgabe in der Oberfläche zu erzeugen.
Viel Erfolg!
- Anmelden um Kommentare zu schreiben
Euch gefällt mein Blog?
Vielleicht hilft mir auch ein Buch, euch zukünftig (noch) bessere Artikel zu bieten? (Amazon Wunschliste)
Gerne bewerte ich auch ab und zu einmal unabhängig ein Produkt.
Ich freue mich über jede Art der Unterstützung in Form von Kommentaren, Lob oder Kritik.
Auf zum Kontaktformular!
Zu meinem Google+ Profil
Julian Pustkuchen, M. Sc. Wirtschaftsinformatik ist passionierter Software- & Webentwickler mit den Schwerpunkten Softwaredesign, Objektorientierung sowie Usability- & Ablaufoptimierung bei webks. Ein weiterer Schwerpunkt ist die Entwicklung im CMS Drupal.
Entwickelt Julian gerade keine Software, fährt er Ski, Mountainbike, spielt Badminton, segelt oder verbringt Zeit mit Freunden.
Dieser Blog dient als sein "öffentlicher Notizblo(ck/g)".
Webbasierte Lösungen? Machen wir!
webks: websolutions kept simple
http://www.webks.de
Dir hat dieser Beitrag viel Zeit und Nerven gespart?
Dann freue ich mich über jede kleine Anerkennung:
Oder du suchst weitere professionelle Unterstützung?
Dann bietet dir unser webks.de Softwareentwickler-Team professionelle Dienstleistungen im Web-Development und der Drupal CMS Entwicklung!
Kommentare
Sehr praktisch ist übrigens
Sehr praktisch ist übrigens diese Funktion, wenn man nicht eingreifen will oder kann und die Integrität erhalten muss.
http://www.shauninman.com/archive/2008/01/08/recovering_truncated_php_se...
Hallo Oliver, cooler Tipp!
Hallo Oliver, cooler Tipp! Vielen Dank