WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 26.01.2020 11:27:02

florian
Administrator

Unserialize...?

Ich habe hier eine Installation mit immer wieder diesem Eintrag im errorlog:

2020-01-26T10:23:49+00:00 [Notice] /modules/outputfilter_dashboard/functions.php:[1168] from /modules/outputfilter_dashboard/functions.php:[1686] opf_preload_filter_definitions "unserialize(): Error at offset 396 of 398 bytes" 

Was bedeutet das? Wodurch wird das verursacht?

(WBCE 1.4.2beta, PHP 7.2.26)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#2 30.01.2020 23:06:01

mrbaseman
Developer

Re: Unserialize...?

in der Funktion opf_preload_filter_definitions werden die Outputfilter aus der Datenbank in eine globale Variable geladen, damit sie schneller zugreifbar sind und nicht für jeden Filteraufruf ein Datenbankzugriff notwendig ist. Ein Filter beinhaltet alle Einstellungen, die man im Backend machen kann. Diese Werte sind teilweise als Array möglich, die eventuell auch mehrsprachig als Array hinterlegt sein können (Description, Helppath usw.). Diese Arrays werden serialisiert und beim laden wieder unserialized. Wenn der jeweilige Eintrag nicht als mehrsprachiges Array angelegt ist, dann wird wahrscheinlich diese Notice ausgegeben. Müsste man aber mal in der Datenbanktabelle vom Outputfilter Dashboard nachschauen, welche Werte dort serialisert abgelegt sind und welche vielleicht nicht und ob die Längen vom jeweiligen Eintrag mit den Angaben in der Notice zusammenpassen.

Offline

#3 31.01.2020 07:46:29

florian
Administrator

Re: Unserialize...?

Okay, danke, das hat mir etwas weitergeholfen. Es hängt wohl irgendwie mit der Beschreibung zum Filter  Correct Date Format  zusammen. Ich habs jetzt aber nur durch brachiales Deinstallieren und Neuinstallieren des OPF-Dashboard-Moduls fixen können.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#4 02.02.2020 20:58:09

mrbaseman
Developer

Re: Unserialize...?

Vielleicht hätte es schon geholfen, den Correct Date Format Filter zu deinstallieren und wieder neu zu installieren. Es kann sein, dass da irgendwann mal ein Bug beim Serialisieren und Escapen drin war, und dessen Auswirkung bei der Installation des Filters hat dann in deiner Datenbank weiter gelebt. Das war eine ältere Installation, die nach und nach aktualisiert wurde, oder? Sonst könnte ich mir nicht so recht erklären, warum die Neuinstallation des Opf Dashboard das Problem behoben hat.

Offline

#5 02.02.2020 21:35:30

florian
Administrator

Re: Unserialize...?

Löschen ging nicht, beim Klicken auf das Lösch-Icon ist nichts passiert (auch kein JS-Fehler).
Ich vermute übrigens, das Problem sind die " und/oder ' in der Filterbeschreibung.
Die Seite, bei der das Problem auftrat, hatte ich von WB 2.8.1 direkt auf WBCE 1.4.2 migriert. Da gab es dann auch die üblichen Zeichensatzprobleme.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#6 03.02.2020 09:43:33

mrbaseman
Developer

Re: Unserialize...?

Wenn beim Klick nix passiert, dann hat sich wohl das JavaScript verhakt (vermutlich weil mit dem Quoting) was durcheinander gekommen ist.
In dem Fall kann es helfen, browserseitig JS abzuschalten. Manche Features wie Drag&Drop gehen dann natürlich nicht mehr, aber die Grundfunktionen müssten auch ohne JS noch funktionieren - in dem Fall vielleicht sogar besser als mit. Ich muss aber auch zugeben, dass ich diesen Modus nicht regelmäßig teste.

Offline

#7 24.02.2020 17:58:36

boeseroeser
Gast

Re: Unserialize...?

Ich hab da auch so ein Ärgernis, müllt mir in irrem Tempo das Error-Log zu:

2020-02-24T16:51:23+00:00 [Notice] /modules/outputfilter_dashboard/functions.php:[1168] from /modules/outputfilter_dashboard/functions.php:[1686] opf_preload_filter_definitions "unserialize(): Error at offset 396 of 401 bytes

Passiert bei einer Website, die ich gerade von WB 2.8.1 geupdatet habe..

#8 24.02.2020 18:07:52

florian
Administrator

Re: Unserialize...?

Die Brachialmethode - bitte beachten, dabei gehen ggf. bereits vorgenommene Filteranpassungen verloren:

1) In der /modules/outputfilter_dashboard/info.php die Zeile

$module_level       = 'core';

entfernen
2) OPF Dashboard über Erweiterungen > Module deinstallieren
3) outputfilter_dashboard.zip hier aus dem Anhang runterladen und über Erweiterungen > Module wieder installieren

Ich hatte auch schon mal versucht, das an dem correct_date-Filter zu fixen, das hatte aber nichts gebracht.

Das Problem tritt so weit ich sehe nur bei Migrationen auf.

Beitrag geändert von florian (24.01.2023 12:00:39)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#9 24.02.2020 19:47:36

boeseroeser
Gast

Re: Unserialize...?

Möglicherweise kann ich NOCH brachialer:

outputfilter_dashboard/functions.php, Zeile 1168:

            @ $filter['desc'] = unserialize($filter['desc']);

Was das ist und tut weiß ich nicht, aber es sieht viel hübscher aus.

EDIT:
Da ist das gleiche nochmal, passiert aber viel seltener:
/modules/outputfilter_dashboard/tool.php Zeile 245

@ $filter['desc'] = unserialize($filter['desc']);

Auch hier hilft das vorangestellte @ gegen error log Überlauf

Beitrag geändert von boeseroeser (24.02.2020 23:24:53)

#10 25.02.2020 09:44:49

webbird
Administrator

Re: Unserialize...?

boeseroeser schrieb:

            @ $filter['desc'] = unserialize($filter['desc']);

Was das ist und tut weiß ich nicht, aber es sieht viel hübscher aus.


@ unterdrückt Fehler. Sollte man normalerweise meiden, eine saubere Behandlung via try...catch wäre besser, aber letztlich würde die wohl auch im Log landen. *Eigentlich* müßte man herausfinden, warum die serialisierten Daten überhaupt kaputt sind, denn durch die Fehlerunterdrückung ist $filter['desc'] im Anschluß leer. (Edit: Genau genommen ist es natürlich durch den Fehler leer, die Fehlerunterdrückung indes verhindert, dass man davon erfährt.) Ob das Folgen hat, kann ich nicht bewerten.

https://www.php.net/manual/de/language. … ontrol.php


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#11 25.02.2020 16:45:33

mrbaseman
Developer

Re: Unserialize...?

Die Filterbeschreibungen können mehrsprachig sein. Je nach Backend-Sprache wird der passende übersetzte Text angezeigt.
Die Überlegung weiter oben im Thread war, dass wohl bei der Konvertierung älterer Datenbankeinträge etwas mit dem Quoting durcheinander gekommen ist und der serialisierte Eintrag dann nicht mehr entpacken lässt.

Wenn man den Fehler beim Entpacken unterdrückt, ist halt hinterher das Beschreibungsfeld leer. Das ist an der Stelle kein Beinbruch. Ich nehm mir vor, dass ich den Fehler künftig besser abfange.

Weniger brachial wäre es, den betreffenden FIlter zu exportieren, ihn dann zu löschen und wieder frisch zu importieren. Besser wäre es natürlich, wenn wir gar nicht in diesen Fehler reinlaufen würden, aber dazu müsste man herausfinden was genau die serialisierten Daten kaputt macht.

Offline

#12 25.02.2020 18:19:56

boeseroeser
Gast

Re: Unserialize...?

(mobile)
Bei diese Site, Update von wb2.8.1, ist viel schief gegangen. Ich hab's in der Zwischenzeit von hinten aufgezäumt, jetzt geht's besser.

Fußzeile des Forums

up