TinyMCE funktioniert nicht mehr

Fragen zur Installation von CONTENIDO 4.10? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
moehre
Beiträge: 3
Registriert: Do 4. Jun 2020, 12:54
Kontaktdaten:

TinyMCE funktioniert nicht mehr

Beitrag von moehre » Do 4. Jun 2020, 13:17

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 :?:

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: TinyMCE funktioniert nicht mehr

Beitrag von Faar » Do 4. Jun 2020, 16:40

Es ist denkbar, dass alte Dateien nicht gelöscht wurden und dazwischen funken.
Wurden denn alle Verzeichnisse vor dem Update umbenannt?
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: TinyMCE funktioniert nicht mehr

Beitrag von xmurrix » Fr 5. Jun 2020, 15:18

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
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

moehre
Beiträge: 3
Registriert: Do 4. Jun 2020, 12:54
Kontaktdaten:

Re: TinyMCE funktioniert nicht mehr

Beitrag von moehre » Sa 6. Jun 2020, 10:31

Hallo xmurrix,

vielen Dank für die Antwort.

Ich werde das testen und mein Ergebnis rückmelden.

VG M

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: TinyMCE funktioniert nicht mehr

Beitrag von xmurrix » Mo 6. Jul 2020, 11:37

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
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

moehre
Beiträge: 3
Registriert: Do 4. Jun 2020, 12:54
Kontaktdaten:

Re: TinyMCE funktioniert nicht mehr

Beitrag von moehre » Mo 6. Jul 2020, 11:43

:D

funktioniert...

Antworten