Wird geprüft: Module (XML-Dateien) importieren - Zeichenfehl

Oldperl
Beiträge: 4255
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von Oldperl » Di 5. Okt 2010, 13:14

@Karsten: Warum so agressiv? Stay cool. 8)
josh hat geschrieben:Am Freitag war noch alles in Ordnung, am Montag der Fehler. Mein Admin hat ein Update eingespielt.
josh hat geschrieben:Ich nehme an das der Fehler nicht bei PHP oder dem xml reader liegt, sondern
durch das PHP Sicherheitsupdate erst jetzt in Contenido auftritt.
Ich vermute das es eher an der PHP-Version liegt, und sich dort ein Fehler im XMLReader eingeschlichen hat, oder etwas an der Funktion geändert wurde. Ähnliches hatte ich schon bei älteren PHP-Versionen auch in anderen Bereichen.
Encoding könnte ein Problem sein, wobei ich das weniger denke, da Contenido sich das Encoding aus der Datei ausliest und an den XML-Reader weiterreicht. Da es vor dem Update ging und nun nicht mehr würde ich die xml-Datei ausschließen.
Was man auch noch schauen könnte, inwieweit Filter genutzt werden und inwieweit diese in der PHP-Version anders funktionieren bzw. von einem Update betroffen sind.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von idea-tec » Di 5. Okt 2010, 13:18

Keine Sorge ... i schday kool ;-)

ich hatte an einem übernommenen server ähnliche probleme (jedoch nicht mit contenido) und dort hat es schon probleme beim schreiben gegeben. erst als wir uns die dateien angesehen haben kam man drauf. auch dort hatte es gelautet: kann nicht sein ;-) ich schreibe rein aus der erfahrung raus. manchmal nutzt es auch, die datei abzulegen und mit dem browser aufzurufen :-) wenig aufwand, hin und wieder sehr effektiv ;-)
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

josh
Beiträge: 156
Registriert: Do 24. Jun 2004, 09:25
Wohnort: Ahlen
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von josh » Di 5. Okt 2010, 13:22

Hallo Ortwin,
hallo idea-tec,

hier mal die Exportdatei:

Code: Alles auswählen

<?xml version="1.0" encoding="ISO-8859-1"?>
<module><name>test-OK</name>
<description/>
<type/>
<input>
?><?php
echo '<Table border="333">';
</input>
<output><?php
echo mi18n("Ein Test");
?></output>
</module>
Das Problem besteht auf allen Contenidoinstallationen auf dem Server - nach dem PHP Update.
Ich würde meinen das es nicht an Contenido liegt, aber die Modul Historie funktioniert.

Viele Grüße

josh

josh
Beiträge: 156
Registriert: Do 24. Jun 2004, 09:25
Wohnort: Ahlen
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von josh » Di 5. Okt 2010, 13:39

Hallo Ortwin,
Ich vermute das es eher an der PHP-Version liegt, und sich dort ein Fehler im XMLReader eingeschlichen hat, oder etwas an der Funktion geändert wurde. Ähnliches hatte ich schon bei älteren PHP-Versionen auch in anderen Bereichen.
Das ist auch meine Vermutung. Aber... dieses Update ist wahrscheinlich das letzte in der 5.2 Reihe. Danach geht es mit PHP 5.3 weiter.
Neuer Server... ???

Die Versionierung in Contenido funktioniert - da werden ja auch xlm Dateien eingelesen!
Der Modul-Import funktioniert nicht.
Nach stundenlangem Googlen konnte ich nichts darüber finden das jemand probleme mit dem xlm reader hat.

Die Übersetzung funktioniert auch:

Code: Alles auswählen

<?xml version="1.0" encoding="ISO-8859-1"?>
<module><translation origin-language-id="1" origin-language-name="deutsch"><string><original>Ein Test</original>
<translation>Bin gespannt</translation>
</string>
</translation>
</module>
Es gibt keine Fehlermeldung - nur < > " Zeichen sind weg.

Viele Grüße

josh

Oldperl
Beiträge: 4255
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von Oldperl » Di 5. Okt 2010, 21:24

Hallo josh,

sorry, aber dann kann ich so nicht mehr Helfen, da ich selbst nirgends diese PHP-Version drauf habe und auch nicht dahingehend Updaten werde, sondern wenn dann gleich auf PHP > 5.3 gehen werde, soweit das möglich ist.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

josh
Beiträge: 156
Registriert: Do 24. Jun 2004, 09:25
Wohnort: Ahlen
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von josh » Di 5. Okt 2010, 23:30

Hallo Ortwin,

vielleicht kannst du mir mit ein paar Tipps helfen.
Was man auch noch schauen könnte, inwieweit Filter genutzt werden und inwieweit diese in der PHP-Version anders funktionieren bzw. von einem Update betroffen sind.
Wo genau (in welcher Datei/Funktion) wird der Import vorgenommen?
Wo genau (in welcher Datei/Funktion) wird die Historie zurückgeschrieben?
Ich denke das es da einen Unterschied geben muss weil ja die Historie funktioniert.

Wenn ich mit den Infos das Problem lösen kann poste ich die Lösung hier.
Das du die PHP Version nicht installieren kannst ist klar. Ich denke auch über einen 5.3 Server nach.

Vielleicht sehen wir uns diese Tage in Offenbach?
Ich freue mich schon auf das Communido Entwicklertreffen (22.-23.10.2010)

Viele Grüße

Josh

josh
Beiträge: 156
Registriert: Do 24. Jun 2004, 09:25
Wohnort: Ahlen
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von josh » Mi 6. Okt 2010, 00:35

Hallo Ortwin,

ich habe den Fehler:

contenido 4.8.13
Datei: contenido/classes/class.xmlparser.php

Zeile 600:

Code: Alles auswählen

if (!xml_parse($this->parser, $sData, feof($fp)))
ersetzen durch:

Code: Alles auswählen

if (!xml_parse($this->parser, str_replace(array('>','<','"'),array('>','<','"'),$sData), feof($fp)))
Ich weis nicht ob das so reicht, ob weitere Zeichen ersetzt werden müssen oder ob der Zeichensatz eine Rolle spielen kann - php 5.3 usw.
Jedenfalls lassen sich die Module jetzt wieder einlesen. Also doch ein Bug.

Vielleicht kannst du den Code noch verbessern bzw. ergänzen?


Viele Grüße

josh

josh
Beiträge: 156
Registriert: Do 24. Jun 2004, 09:25
Wohnort: Ahlen
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von josh » Mi 6. Okt 2010, 19:40

Hallo,

Noch eine Info:
Mit PHP 5.3.3 und 5.2.14 veröffentlicht das PHP-Team zwei Bugfixupdates der freien Scriptsprache, die diverse Sicherheitslücken schließen.
Quelle golem.de
http://www.php.net/ChangeLog-5.php#5.3.3

Es könnte also sein das dieses Problem auch unter php5.3.3 besteht.


Viele Grüße josh

Oldperl
Beiträge: 4255
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von Oldperl » Mi 6. Okt 2010, 19:52

:!: Als Merker verschoben nach Bugs.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Tbird
Beiträge: 25
Registriert: Do 15. Mär 2007, 12:23
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von Tbird » Di 26. Okt 2010, 09:31

Hallo!

Ich habe diesen Fehler auch:
Contenido 4.8.14 und PHP 5.2.9

Habe nun den Code von josh eingefügt und noch was bemerkt:
Das & wurde auch nicht übernommen und den Code deshalb so angepaßt:

Zeile 600 in contenido/classes/class.xmlparser.php:

Code: Alles auswählen

if (!xml_parse($this->parser, str_replace(array('>','<','"','&'),array('>','<','"','&'),$sData), feof($fp)))
Gruß
Ralf

josh
Beiträge: 156
Registriert: Do 24. Jun 2004, 09:25
Wohnort: Ahlen
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von josh » Mi 27. Okt 2010, 21:35

Hallo Tbird,

stimmt & muss auch ersetzt werden.

Mir ist noch was aufgefallen:
Die Größe der xml Datei ist in Zeile 598 auf 4096 byte begrenzt

Code: Alles auswählen

while ($sData = fread($fp, 4096))


So werden auch größere Module komplett eingelesen

Code: Alles auswählen

while ($sData = fread($fp, filesize($file))) 
Viele Grüße aus Ahlen

josh

Oldperl
Beiträge: 4255
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von Oldperl » Do 28. Okt 2010, 07:55

Hallo Josh,
josh hat geschrieben:Die Größe der xml Datei ist in Zeile 598 auf 4096 byte begrenzt

Code: Alles auswählen

while ($sData = fread($fp, 4096))
Wieso begrenzt?
Die xml-Datei wird dort nur stückchenweise eingelesen und an den Parser geschickt. Das Ende der Datei wird dabei mittels EOF geprüft.
Deine Änderung bewirkt, das versucht wird die gesamte Datei auf einmal in den Parser (Speicher) zu lesen, was, je nach Größe der Datei und Serverumgebung, recht schnell ein "Out of Memory" zur Folge haben würde.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

josh
Beiträge: 156
Registriert: Do 24. Jun 2004, 09:25
Wohnort: Ahlen
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von josh » Do 28. Okt 2010, 08:43

Hallo Ortwin,

das dachte ich auch, aber mein Modul wurde nur teilweise eingelesen, nach der Änderung natürlich die ganze Datei.

Habe da auch ein paar Fragezeichen gehabt!
Warum die Datei nicht stückweise eingelesen wurde weis ich nicht.
Aber so konnte ich mir helfen.

Normalerweise sind die Module ja auch nicht so groß, aber ich habe ein Modul mit
etlichen Funktionen drin, es wurde nicht komplett eingelesen.

Viele Grüße

Josef

Oldperl
Beiträge: 4255
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von Oldperl » Do 28. Okt 2010, 09:41

Hallo Josef,

also das war dann dein Forenname, ich und mein Alzheimer. :mrgreen:

Also das sollte man nochmal beobachten. Hier wäre mal interessant sowohl die "magische" Dateigröße, als auch die dabei verwendeteten Servereinstellungen (PHP-Version, Scriptlaufzeit, zugeteilter Speicher, etc.) zu haben, die den Abbruch erzeugen. Ein Screenshot oder ein Copy&Paste aus dem Administrationsbereich->Sytem wäre hier hilfreich.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Re: Module (XML-Dateien) importieren - Zeichenfehler

Beitrag von kummer » Do 28. Okt 2010, 10:45

nur so als tipp am rande, wenn das ganze dann mal neu programmiert werden sollte. sonderzeichen benötigen keine umwandlung, wenn diese in einem cdata-bereich liegen. damit lösen sich dann einige probleme von selber auf.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

Gesperrt