Neu Probleme beim Aufruf von Email-Vorlage nach Shop-Update

Spirits77

Aktives Mitglied
23. Dezember 2020
81
2
Hallo zusammen,

ich habe jetzt kürzlich meinen Shop von 5.1.5 auf die Version 5.4.0 geupdatet.

Alles hat ohne Probleme geklappt. Allerdings kriege ich jetzt beim Aufruf der Email-Vorlage für die Bestellbestätigung harte PHP-Fehler:

Fatal error: Uncaught JsonException: Control character error, possibly incorrectly encoded in /var/www/vhosts/spiritsofscandinavia.hanna.hostkraft.de/httpdocs/jtl/includes/src/Backend/Revision.php:220 Stack trace: #0 /var/www/vhosts/spiritsofscandinavia.hanna.hostkraft.de/httpdocs/jtl/includes/src/Backend/Revision.php(220): json_decode() #1 [internal function]: JTL\Backend\Revision::JTL\Backend\{closure}() #2 /var/www/vhosts/spiritsofscandinavia.hanna.hostkraft.de/httpdocs/jtl/includes/src/Backend/Revision.php(229): array_map() #3 /var/www/vhosts/spiritsofscandinavia.hanna.hostkraft.de/httpdocs/jtl/includes/src/Smarty/BackendPlugins.php(59): JTL\Backend\Revision->getRevisions() #4 /var/www/vhosts/spiritsofscandinavia.hanna.hostkraft.de/httpdocs/jtl/admin/templates_c/02d3a5b7578cfb2b2af77261de5d0ba9bd033a41_0.file.emailvorlagen_bearbeiten.tpl.php(408): JTL\Smarty\BackendPlugins->getRevisions() #5 /var/www/vhosts/spiritsofscandinavia.hanna.hostkraft.de/httpdocs/jtl/includes/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php(123): content_679a529f2c9ee9_13255050() #6 /var/www/vhosts/spiritsofscandinavia.hanna.hostkraft.de/httpdocs/jtl/includes/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php(114): Smarty_Template_Resource_Base->getRenderedTemplateCode() #7 /var/www/vhosts/spiritsofscandinavia.hanna.hostkraft.de/httpdocs/jtl/includes/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php(217): Smarty_Template_Compiled->render() #8 /var/www/vhosts/spiritsofscandinavia.hanna.hostkraft.de/httpdocs/jtl/includes/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php(386): Smarty_Internal_Template->render() #9
...


Alle anderen Email-Vorlagen lassen sich öffnen, nur diese eine nicht.

Hat jemand eine Idee, woran es liegen könnte?
 

OliverS

Sehr aktives Mitglied
Mitarbeiter
1. April 2022
137
69
Hückelhoven
Da gibt es in der Datenbank (trevisions) wohl Einträge für die Mailvorlage, bei denen die Spalte "content" nicht korrekt gefüllt ist. Das müsste korrigiert/gelöscht werden. Eigentlich müsste in dem Feld ein JSON stehen. Wenn der nicht korrekt ist, gibt das Probleme. Mach am besten ein Ticket dafür auf, das muss, wie gesagt, in der Datenbank korrigiert werden.
 

Spirits77

Aktives Mitglied
23. Dezember 2020
81
2
Da gibt es in der Datenbank (trevisions) wohl Einträge für die Mailvorlage, bei denen die Spalte "content" nicht korrekt gefüllt ist. Das müsste korrigiert/gelöscht werden. Eigentlich müsste in dem Feld ein JSON stehen. Wenn der nicht korrekt ist, gibt das Probleme. Mach am besten ein Ticket dafür auf, das muss, wie gesagt, in der Datenbank korrigiert werden.

Also ich habe Zugriff auf die Datenbank. In "content" für die Bestellbestätigung steht drin:

{"kEmailvorlage":"3","cName":"Bestellbest\u00e4tigung","cBeschreibung":"","cMailTyp":"text\/html","cModulId":"core_jtl_bestellbestaetigung","cDateiname":"bestellbestaetigung","cAktiv":"Y","nAKZ":"0","nAGB":"0","nWRB":"0","nFehlerhaft":"0","nWRBForm":"0","references":{"1":{"kEmailvorlage":"3","kSprache":"1","cBetreff":"Ihre Bestellung bei Spirits of Scandinavia","cContentHtml":"{includeMailTemplate template=header type=html}\r\n\r\nSehr {if $Kunde->cAnrede == \"w\"}geehrte{else}geehrter{\/if} {$Kunde->cAnredeLocalized} {$Kunde->cNachname},<br>\r\n<br>\r\nvielen Dank f\u00fcr Ihre Bestellung bei {$Einstellungen.global.global_shopname}.<br>\r\n<br>\r\n{if $Verfuegbarkeit_arr.cArtikelName_arr|@count > 0}\r\n{$Verfuegbarkeit_arr.cHinweis}\r\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\r\n {foreach from=$Verfuegbarkeit_arr.cArtikelName_arr item=cArtikelname}\r\n <tr>\r\n <td width=\"18\">&bull;<\/td>\r\n <td align=\"left\" valign=\"middle\">{$cArtikelname}<\/td>\r\n <\/tr>\r\n {\/foreach}\r\n<\/table><br>\r\n{\/if}\r\nIhre Bestellung mit Bestellnummer {$Bestellung->cBestellNr} umfasst folgende Positionen:<br>\r\n<br>\r\n{foreach name=pos from=$Bestellung->Positionen item=Position}\r\n <table cellpadding=\"10\" cellspacing=\"0\" border=\"0\" width=\"100%\" style=\"border-bottom: 1px dotted #929292;\">\r\n <tr>\r\n
....

Ist jetzt die Frage, wo jetzt genau der Fehler ist...

Oder wäre die Lösung, alles löschen und neu machen?
 

OliverS

Sehr aktives Mitglied
Mitarbeiter
1. April 2022
137
69
Hückelhoven
Das letzte Zeichen müsste da immer } sein. Wenn dem so ist, dann ist das okay. Falls das fehlt, dann ist das JSON unvollständig und die ganze Zeile müsste dann aus der Tabelle gelöscht werden.
 

Spirits77

Aktives Mitglied
23. Dezember 2020
81
2
Das letzte Zeichen müsste da immer } sein. Wenn dem so ist, dann ist das okay. Falls das fehlt, dann ist das JSON unvollständig und die ganze Zeile müsste dann aus der Tabelle gelöscht werden.

Ok. Also der DB Inhalt endet mit

{if $Bestellung->Lieferadresse->cMobil}\n <tr>\n <td class=\"column mobile-left\" al

ist also in der Tat nicht gültig.

Das Komische ist aber, dass der Shop vor dem Update genau das PHP-Problem beim Öffnen der Vorlage nicht hatte. Dort konnte ich die Email-Vorlage öffnen, obwohl der DB Inhalt der Gleiche war, also auch dort schon ungültig.

Frage wäre jetzt: Wenn das eine Tabelle für Revisions ist, muss ja irgendwo anders der Ursprungstext stehen.

Bzw. was passiert, wenn ich aus der Revisions-Tabelle alle Email-Vorlagen von der Bestellbestätigung einfach rauslöschen würde?
 

OliverS

Sehr aktives Mitglied
Mitarbeiter
1. April 2022
137
69
Hückelhoven
Ich weiß leider nicht, woher das kommt. Das passiert auch nicht mit allen Revisionen. Bei denen, wo das passiert, sind auch immer exakt 65535 (oder 65536? Eins von beidem auf jeden Fall) Zeichen in der Spalte. Zumindest war das bei meinen bisherigen Fällen so. Ich bin da bisher immer von alten Revisionen ausgegangen, welche die Umstellung auf utf8mb4 nicht "überlebt" haben.

Wenn du alle da rauslöschst, hast du nur noch die aktuelle Vorlage, keine Revisionen mehr.
 

Ähnliche Themen