Seite 1 von 1

TinyMCE funktioniert nicht mehr

Verfasst: Do 4. Jun 2020, 13:17
von moehre
Hallo erstmal, ich habe folgendes Problem:

Nach dem Update Contenidos von Version 4.9.12 auf 4.10.1 funktioniert der TinyMCE 3 oder TinyMCE 4 nicht mehr, wenn ich im Backend auf den Editor wechsel öffnet er sich nicht (Editorbereich bleibt weiß).

Die entsprechenden Apache-Logs, syslogs, php-Logs sind leer. Alle Seiten scheinen auch richtig zu funktionieren, auch das Backend scheint - mit Ausnahme des TinyMCE - seinen Dienst zu tun.

Nur im

Code: Alles auswählen

data/logs/errorlog.txt
wird eine Meldung beim Klick auf Editor ausgegeben:

Code: Alles auswählen

[04-Jun-2020 12:00:36 UTC] PHP Parse error:  syntax error, unexpected 'editcontentList' (T_STRING), expecting ',' or ';' in /var/www/webseite/contenido/includes/include.con_editcontent.php(523) : eval()'d code on line 149
Ich habe auch bereits verschiedene php-Versionen durchprobiert... ohne Erfolg.

Bei einem frisch installierten Contenido funktioniert der TinyMCE 4 wie er soll :arrow: auch schon getestet.

Gibts da eine Lösung oder Ideen :?:

Re: TinyMCE funktioniert nicht mehr

Verfasst: Do 4. Jun 2020, 16:40
von Faar
Es ist denkbar, dass alte Dateien nicht gelöscht wurden und dazwischen funken.
Wurden denn alle Verzeichnisse vor dem Update umbenannt?

Re: TinyMCE funktioniert nicht mehr

Verfasst: Fr 5. Jun 2020, 15:18
von xmurrix
Hallo moehre,

willkommen im CONTENIDO Forum.

In der Datei "contenido/includes/include.con_editcontent.php" wird der Code der auszugebenden Seite erstellt und ausgeführt.

Laut der Fehlermeldung ist in Zeile 149 des generierten Codes ein Fehler, vermutlich zurückzuführen auf einen fehlerhaften PHP-Code.

Ziemlich am Ende der include.con_editcontent.php in Zeile 523 wird der generierte Code ausgeführt. Hier kannst du die Zeile

Code: Alles auswählen

eval("?>\n" . $code . "\n<?php\n");
in wie folgt ändern:

Code: Alles auswählen

echo $code;exit();
Das sollte den generierten Code ausgeben und in Zeile 149 der Ausgabe sollte der Fehler sein.

Alternativ kannst du auch alle Modulcodes und Layouts auf fehlerhafte PHP-Syntax prüfen.

Gruß
xmurrix

Re: TinyMCE funktioniert nicht mehr

Verfasst: Sa 6. Jun 2020, 10:31
von moehre
Hallo xmurrix,

vielen Dank für die Antwort.

Ich werde das testen und mein Ergebnis rückmelden.

VG M

Re: TinyMCE funktioniert nicht mehr

Verfasst: Mo 6. Jul 2020, 11:37
von xmurrix
Als Info an alle, die auch ein ähnliches Problem mit TinyMCE haben sollten.

Das Problem lag an der Verwendung der Artikel-Versionierung in Verbindung mit der Ausgabe des startenden Body-Tags als ein PHP String-Literal.

Ist die Artikel-Versionierung aktiv, wird im Backend der dazugehörige HTML Code dem startenden Body-Tag per regulärem Ausdruck hinzugefügt. Das passiert direkt im generierten PHP-Code, also bevor der Code interpretiert und als HTML ausgegeben wird.

Wenn der startende Body-Tag in einem Layout oder in einer Modulausgabe als PHP-String ausgegeben wird,

Code: Alles auswählen

<?php
$bodyId = "";
echo "<body id=\"$bodyId\">";
?>
wird diesem Code der HTML-Text für die Artikel-Versionierung angehängt, also

Code: Alles auswählen

<?php
$bodyId = "";
echo "<body id=\"$bodyId\"> <div class="editcontentList">...";
?>
Da der reguläre Ausdruck nicht weiß, dass es sich um einen mit PHP echo auszugebenden String für den startenden Body-Tag handelt, werden im danach hinzugefügten String (HTML-Code für die Artikel-Versionierung) natürlich nicht die String-Begrenzer (") entsprechend maskiert.
Am Ende hat man einen fehlerhaften PHP-Code der so nicht interpretiert werden kann.

Um das Problem zu umgehen, wird empfohlen, die Ausgabe des startenden Body-Tags im HTML-Kontext wie folgt auszugeben:

Code: Alles auswählen

<?php
$bodyId = "";
?>
<body id="<?php echo $bodyId ?>">
Somit wird der Code für die Artikel-Versionierung korrekt hinzugefügt, ohne dass es einen PHP-Fehler verursacht.

Das ist eigentlich ein Bug, andererseits ist es auch sehr schwierig, mittels regulärer Ausdrücke irgendwelche Ersetzungen oder Anpassungen im Code zu machen, vor allem, wenn es sich um gemischten Code (HTML, JS, CSS, PHP) handelt.

Grüße
xmurrix

Re: TinyMCE funktioniert nicht mehr

Verfasst: Mo 6. Jul 2020, 11:43
von moehre
:D

funktioniert...