WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 14.07.2022 11:55:16

byteworker
Mitglied

opf_preload_filter_definitions "unserialize(): Error at offset 181 of

Diese Meldung erhalte ich in Massen, was kann ich da tun?

2022-07-14T09:51:59+00:00 [Notice] /modules/outputfilter_dashboard/functions.php:[1187] from /modules/outputfilter_dashboard/functions.php:[1706] opf_preload_filter_definitions "unserialize(): Error at offset 181 of 401 bytes"
2022-07-14T09:52:07+00:00 [Notice] /modules/outputfilter_dashboard/functions.php:[1187] from /modules/outputfilter_dashboard/functions.php:[1706] opf_preload_filter_definitions "unserialize(): Error at offset 181 of 401 bytes"
2022-07-14T09:52:23+00:00 [Notice] /modules/outputfilter_dashboard/functions.php:[1187] from /modules/outputfilter_dashboard/functions.php:[765] opf_preload_filter_definitions "unserialize(): Error at offset 181 of 401 bytes"
2022-07-14T09:52:24+00:00 [Notice] /modules/outputfilter_dashboard/tool.php:[245] from /admin/admintools/tool.php:[100] "unserialize(): Error at offset 181 of 401 bytes"
2022-07-14T09:52:40+00:00 [Notice] /modules/outputfilter_dashboard/functions.php:[1187] from /modules/outputfilter_dashboard/functions.php:[1706] opf_preload_filter_definitions "unserialize(): Error at offset 181 of 401 bytes"
2022-07-14T09:52:42+00:00 [Notice] /modules/outputfilter_dashboard/functions.php:[1187] from /modules/outputfilter_dashboard/functions.php:[1706] opf_preload_filter_definitions "unserialize(): Error at offset 181 of 401 bytes"

Grüße Norbert

Offline

#2 14.07.2022 16:07:55

bernd
Developer

Re: opf_preload_filter_definitions "unserialize(): Error at offset 181 of

Mmmmh,

Das "Error at offset ...." passiert eigentlich immer dann, wenn in den serialisierten Daten die Angabe der Stringlänge nicht mit der tatsächlichen Stringlänge übereinstimmt.

In der Zeile 1187 wird die 'desc'" also die Beschreibung der Filter ausgelesen. Da sind paar dabei in denen " und ' vorkommen die natürlich escaped werden. Möglich, dass da was schiefläuft (wage Vermutung).

Kannst du mal gucken welche Kollation für deine Datenbank und/oder die Tabelle mod_outputfilter_dashboard eingestellt ist?
Ist das eine ältere Installation die upgedated wurde oder eine brandneue?
Und erzähl mal noch bischen was über PHP- und MySQL/MariaDB-Version ;-)


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#3 14.07.2022 17:23:49

byteworker
Mitglied

Re: opf_preload_filter_definitions "unserialize(): Error at offset 181 of

Ha danke für die Unterstützung.

es ist eine frische Installation, die ich aber zuerst mit dem Xampp auf dem Rechner aufgesetzt hatte, dann auf den Server übertragen habe.

Diese Datentabelle hat "utf8mb4_0900_ai_ci" als Kollation, damit sind viele "formatiert" (sagt man das so?) ein paar auch mit "utf8_unicode_ci".

WBCE: 1.5.2
PHP: 7.4
Server-Zeichensatz: UTF-8 Unicode (utf8mb4)
Datenbank-Client Version: libmysql - mysqlnd 7.4.30
PHP-Version: 7.4.30
phpMyAdmin Version: 5.2.0
SQL Version: 8.0.27

Offline

#4 14.07.2022 17:55:53

byteworker
Mitglied

Re: opf_preload_filter_definitions "unserialize(): Error at offset 181 of

Ich bin jetzt mal an den Server, habe diese Datenbank in eine neue DB migriert, dabei dann gleich UTF-8 als Ziel angegeben, die neuen Datenbankdaten der entsprechenden Tabelle sind:

wbce_mod_outputfilter_dashboard: MyISAM    utf8_general_ci

Server-Version: 5.6.33-log
Server-Zeichensatz: UTF-8 Unicode (utf8)   

Gleiche Fehlermeldung im Backend:

2022-07-14T15:51:11+00:00 [Notice] /modules/outputfilter_dashboard/functions.php:[1187] from /modules/outputfilter_dashboard/functions.php:[1706] opf_preload_filter_definitions "unserialize(): Error at offset 181 of 401 bytes"
2022-07-14T15:51:13+00:00 [Notice] /modules/outputfilter_dashboard/functions.php:[1187] from /modules/outputfilter_dashboard/functions.php:[1706] opf_preload_filter_definitions "unserialize(): Error at offset 181 of 401 bytes"
2022-07-14T15:51:14+00:00 [Notice] /modules/outputfilter_dashboard/functions.php:[1187] from /modules/outputfilter_dashboard/functions.php:[1706] opf_preload_filter_definitions "unserialize(): Error at offset 181 of 401 bytes"

Beitrag geändert von byteworker (14.07.2022 18:03:57)

Offline

#5 14.07.2022 18:56:35

florian
Administrator

Re: opf_preload_filter_definitions "unserialize(): Error at offset 181 of

Das tritt leider oft auf, nachdem eine Website z.B. vom Entwicklungs- auf den Produktivserver übertragen wurde.
Einzige mir bekannte Abhilfe ist die Deinstallation und Neuinstallation des OPF-Moduls.
https://forum.wbce.org/viewtopic.php?pid=29959#p29959


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#6 14.07.2022 19:52:04

byteworker
Mitglied

Re: opf_preload_filter_definitions "unserialize(): Error at offset 181 of

Neuinstallation hat geholfen, danke! aber was war da los?

"Great news. No errors reported"

Sollte ich eine andere Art der Testumgebung verwenden? ich arbeite mit dem Mampp auf Win10 und auch am MacOS habe ich den am Start.

Offline

#7 14.07.2022 20:08:24

florian
Administrator

Re: opf_preload_filter_definitions "unserialize(): Error at offset 181 of

Nein, an der Testumgebung liegt's nicht, vielleicht irgendwie an der Art und Weise, wie der DB-Dump erzeugt wird, keine Ahnung. Ich kann da leider immer nur die Symptome und nicht die Ursache beheben.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

byteworker

#8 15.07.2022 14:33:36

mrbaseman
Developer

Re: opf_preload_filter_definitions "unserialize(): Error at offset 181 of

Sowas in der Art muss es wohl sein. Wenn alles ASCII mit 8 Bit ist, dürfte es keine Probleme geben. Genauso wenn beide Systeme die Multibyte Zeichen gleich behandeln, z.B. beides utf8. Wenn das Encoding anders ist, läuft man vermutlich in diese Probleme rein. Aber da zerhaut es bestimmt nicht nur die Serialisierung, sondern auch die Sonderzeichen, Umlaute zum Beispiel. Das kann man im Dump fixen. Dass dann aber die Längenangaben für die Strings noch passen, ist wahrscheinlich nicht immer gegeben.

Wenn man an den Filtern Anpassungen vorgenommen hat, kann man sie exportieren und nach der Neuinstallation wieder importieren. Das Opf Dashboard deinstallieren zu müssen ist ein unschöner Workaround. Ich muss mal schauen, ob man die Neuinstallation zur Bereinigung der Datenbanktabellen nicht auch eleganter lösen kann. Aktuell dürfte ein manueller Aufruf des install Scripts nicht zum gewünschten Ergebnis führen. Da würde erkannt werden dass es schon installiert ist und stattdessen ein Update ausgeführt, sofern da überhaupt was zu tun ist. Aber dieses Verhalten kann man ja ändern, ich muss nur aufpassen, dass ich damit dann nicht das WBCE Versionsupdate zerschieße

Offline

#9 15.07.2022 17:33:53

bernd
Developer

Re: opf_preload_filter_definitions "unserialize(): Error at offset 181 of

Das Problem dürfte vermutlich auftreten wenn man von utf8 auf utf8mb4 (oder umgekehrt) kommt, dann dürften die Stringlängen u.U. einfach nicht mehr passen.

Unausgegorener Gedanke:
eine Art "Repair Button" mit dem einfach nur die wirklich kritischen Felder (z.B. 'desc') auf dem Zielsystem mit der dort gültigen Kollation neu geschrieben werden?


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#10 15.07.2022 18:22:51

mrbaseman
Developer

Re: opf_preload_filter_definitions "unserialize(): Error at offset 181 of

Tja, ist halt die Frage womit man was überschreibt... Bei der Neuinstallation des Moduls wird für alles halt die Defaulteinstellung genommen. Man verliert zwar alle Änderungen, die man dran vorgenommen hat, aber das scheint ja wohl zuverlässig zu funktionieren.

Offline

#11 15.07.2022 22:49:19

mrbaseman
Developer

Re: opf_preload_filter_definitions "unserialize(): Error at offset 181 of

Ich hab mir das nochmal angeschaut. Die install.php würde genau das richtige machen (die Filtertabelle wegwerfen, dann neu anlegen und danach die Modul- und Plugin-Filter neu installieren).

Früher gab es mal die Möglichkeit, die install.php der Module manuell aufzurufen. Mittlerweile ist das nur noch für upgrade.php und uninstall.php vorgesehen.

Hmm... man könnte das über einen "Repair-Button" aus dem Backend heraus natürlcih auch machen. Oder man holt das Feature für alle Module wieder aus der Schublade. Das käme dann allen Modulen zugute, wobei ich nicht weiß, wie viele davon tatsächlich profitieren würden.

Offline

#12 16.07.2022 08:27:28

florian
Administrator

Re: opf_preload_filter_definitions "unserialize(): Error at offset 181 of

Module > Ausführen: install.php ist mal rausgenommen worden, weil das zu riskant ist, da kann man ziemlichen Schaden anrichten (z.B. Ausführen für WYSIWYG => alle Texte weg). Evtl. könnte man die Funktion für den Superadmin (UserID 1) wieder reinsetzen. Wobei natürlich auch jede:r, der/die zum ersten Mal eine eigene WBCE-Seite aufsetzt, Superadmin ist und nicht unbedingt die Folgen abschätzen kann. Hinzu kommt, dass zu prüfen wäre, ob sich der Aufruf von install.php übers Backend über den Core-Eintrag in der info.php hinwegsetzt oder das Modul da sowieso gar nicht aufgeführt wird bzw. install.php nicht ausgeführt wird.
tl;dr: lieber einen "Repair-Button" ;-)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Fußzeile des Forums

up