Sprachen im Front- und Backend kaputt

Gesperrt
kloevekorn
Beiträge: 199
Registriert: Mo 31. Okt 2005, 15:26
Wohnort: Hamburg
Kontaktdaten:

Sprachen im Front- und Backend kaputt

Beitrag von kloevekorn »

Liebe Leute,

ich habe nach langer Zeit eine Site angefasst, die immer problemlos gelaufen ist und es tritt zu meinem Erschrecken folgendes Problem auf:

- Deutsch in Front- und Backend ok
- Die Sprachen EN und ES funktionieren nicht mehr. Weil das noch niemanden aufgefallen ist, kann das noch kein länger bestehendes Problem sein. Die Quelltextgenerierung bricht offensichtlich vor dem Navigationsmodul ab, der Browser wartet noch ein wenig auf die Daten (Ladeanzeige dreht sich weiter). Im Backend werden auch keine Inhalte angezeigt (weil das Navi-Modul vor den Inhalten kommt vermute ich)

Leider bin ich ein wenig aus dem Thema raus und weiß nicht mehr so richtig, wie ich das jetzt angehe soll. Vor zuviel experimentieren habe ich ein wenig Angst, wer weiß, was noch alles passieren könnte. :(

Die Site verwendet Contenido 4.8.6 und mySQL 5.0.51a, Protokollversion 10, PHP 5.2.17
Ich habe, ohne Erfolg, die con_code geleert und den Inhalt vom Cache-Verzeichnis gelöscht.

Das hier ist die aktuelle Ausgabe vom Fehlerlog:

EDIT-Ergänzung
1

Code: Alles auswählen

[26-Sep-2011 20:07:39] PHP Warning:  include(/home/xxx/public_html/contenido/includes/include..php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in /home/xxx/public_html/contenido/includes/include.backendedit.php on line 128
[26-Sep-2011 20:07:39] PHP Warning:  include() [<a href='function.include'>function.include</a>]: Failed opening '/home/xxx/public_html/contenido/includes/include..php' for inclusion (include_path='.:/usr/lib/php') in /home/xxx/public_html/contenido/includes/include.backendedit.php on line 128
2

Code: Alles auswählen

[26-Sep-2011 21:22:46] /contenido/main.php?area=con_contentallocation&action=con_edit&idart=473&idartlang=1106&idcat=88&tmpchangelang=1&&frame=4&contenido=40b0bb630109423e0cb6d4b6155310a6 MySQL error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
SELECT idpica_alloc FROM con_pica_alloc_con WHERE idartlang = 
[26-Sep-2011 21:22:46] /contenido/main.php?area=con_contentallocation&action=con_edit&idart=473&idartlang=1106&idcat=88&tmpchangelang=1&&frame=4&contenido=40b0bb630109423e0cb6d4b6155310a6 next_record called with no query pending.
3

Code: Alles auswählen

[26-Sep-2011 22:52:26] PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/xxx/public_html/cms/front_content.php:345) in /home/xxx/public_html/cms/front_content.php on line 436
zu 1: Bis auf include.backendedit.php kann ich die Dateien nicht finden und ".../include..php" - was soll das sein mit zwei Punkten?
zu 2: SQL-Fehler 1064 scheint auf ein Versionsproblem mit der installierten mySQL-Version vom Webhoster zusammenzuhängen. Möglicherweise hat der irgendwann ein Update gefahren und jetzt passt was nicht mehr? Warum funktioniert dann aber die Deutsche Seite mit dem gleichen Navi-Modul? Außerdem ist die verwendete mySQL-version wirklich nicht frisch.
zu 3: jetzt auch noch PHP-Header, also das blöde Leerzeichen???

Obwohl ich verschiedene Seiten öfter sowohl im Frontend und im Backend versucht habe aufzurufen, habe ich diese Fehler nur genau jeweils 1x in der Fehlerliste, warum.

Wo genau finde ich "line 1" - "line 1" der SQL-Abfrage wohl? Ich habe allgemein das Problem, die genannten Dateien zu identifizieren.

Hier das Navi-Modul:

Code: Alles auswählen

<?php
$db2 = new DB_contenido();
$sql = "
SELECT cat.idcat, cat.parentid, cat.preid, cat.postid, tree.level, lang.name, ((lang.visible+lang.public)=2) AS 'show'
FROM `con_cat` AS cat
JOIN `con_cat_tree` AS tree ON ( cat.idcat = tree.idcat )
JOIN `con_cat_lang` AS lang ON ( lang.idcat = tree.idcat
AND lang.idlang =$lang)
WHERE cat.idclient =$client
AND (
tree.level <3
)
OR (
tree.level =3
AND cat.parentid =$idcat
)
OR (
(
tree.level =3
OR tree.level =4 

)
AND cat.parentid = (

SELECT parentid

FROM `con_cat` AS cat2

WHERE cat2.idcat =$idcat )

)

OR (

tree.level =3

AND cat.parentid = (

SELECT cat4.parentid

FROM `con_cat` AS cat3, `con_cat` AS cat4

WHERE cat3.idcat =$idcat

AND cat4.idcat = cat3.parentid )

)

OR (

tree.level =5

AND cat.parentid = (

SELECT cat4.parentid

FROM `con_cat` AS cat3, `con_cat` AS cat4

WHERE cat3.idcat =$idcat

AND cat4.idcat = cat3.parentid )

)

 ORDER BY tree.level;
";

$db2->query($sql);

$first_children=array();

$other_children=array();

while ($db2->next_record())

{

	if ($db2->f('preid')=="0"){$node=&$first_children[$db2->f('parentid')];}else{$node=&$other_children;}

	$node[$db2->f('idcat')]=array(

		'name'=>$db2->f('name'),

		'level'=>$db2->f('level'),

		'postid'=>$db2->f('postid'),

		'show'=>$db2->f('show'));

}

function print_cat($id,$cat){

	global $idcat;

	if ($id != $idcat)

	{

		return "<li class=\"lvl".$cat['level']."\"><a href=\"front_content.php?idcat=$id\">".$cat['name']."</a>";

	} else {

		return '<li id="active" class="lvl'.$cat['level'].'"><span>'.$cat['name'].'</span>';

	}

}

function output($parentid)

{

	global $first_children,$other_children;

        if (!is_array($first_children[$parentid])) return;

	list($id,$cat)=each($first_children[$parentid]);

	$output="";

	while (1)

	{

		if ($cat['show'])

		{

		$output.=print_cat($id,$cat);

		$output.=output($id);

		$output.="</li>\n";

		}

		if ($cat['postid']=="0") break;

		$id = $cat['postid'];

		$cat=$other_children[$id];

	}

	if (strlen($output)>0){

		$output = "\n<ul>\n".$output. "</ul>\n";

	}

	return $output;

}
echo output(1);
?>
Ich bedanke mich eure Hilfe und das reindenken! Please help.
Grüße
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Sprachen im Front- und Backend kaputt

Beitrag von xmurrix »

Hallo klovenkorn,

zu 1.:
Hier versucht das Backend das include-Script zum verwendeten CMS-Typ einzubinden. Zu jedem Content-Typ gibt es in der Regel das include-Script zum Editieren des Content-Typs im contenido/includes/ Verzeichnis, z. B. CMS_HTML -> include.CMS_HTML.php. In deinem Fall wird der CMS-Typ wohl nicht übergeben oder der Wert geht irgendwo verloren, siehe Zeile 128 in contenido/includes/include.backendedit.php.

zu 2.:
Es scheint so zu sein, dass zum Artikel kein Eintrag in der entsprechenden Sprache vorliegt. Versuche mal das Script contenido/plugins/content_allocation/includes/include.contentallocation_article.php zu debuggen, vermutlich wird der Fehler hier ausgegeben. In Zeile 21 - 25 solle die Variable $this_idartlang die Id des Datensatzes für die entsprechende Sprache enthalten.

zu 3.:
Das ist deshalb, weil CONTENIDO beim Aufruf des Frontends den Startartikel zur der Kategorie nicht finden kann. Das kann auch ein fehlender Startartikel der Startkategorie sein.

Vermutlich fehlen bei dir Artikel in anderen Sprachen oder die Einträge sind irgendwie korrupt. Was siehst du, wenn du in den Sprachen im Backend durch den Artikelbaum navigierst? Sind da Artikel zu sehen und sind diese auch online?

Es wäre vielleicht auch angebracht, auf die neueste Version von CONTENIDO zu aktualisieren, seit der 4.8.6 ist eine menge passiert (Features u. Bugfixes). Versuch aber zuerst die Sprachen zum Laufen zu bekommen.

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.
kloevekorn
Beiträge: 199
Registriert: Mo 31. Okt 2005, 15:26
Wohnort: Hamburg
Kontaktdaten:

Re: Sprachen im Front- und Backend kaputt

Beitrag von kloevekorn »

Danke für deine ausführliche Hilfe xmurrix! Die Erläuterungen sind sehr hilfreich ungefähr zu kapieren, was da passiert. Für mich überraschenderweise scheint sich mein Editor (BBEdit/Mac) nicht (mehr) an bewährte Zeilenzählungen zu halten ... include.backendedit.php hat bei mir nur 112 Zeilen in der Zählung. Dieser Fehler war früher auch nicht ... :? Aber das führt zu weit.

In diesem Moment meine ich verstanden zu haben, dass die Fehler mehr oder weniger zusammenzuhängen scheinen, zumindest 2 und 3. Schon mal gut.

Im Backend sind die Artikel in allen Sprachen vorhanden, inkl. der Startartikelmarkierungen. Der eigentliche Content wird für die Sprachen 2 und 3 nicht generiert, ist weder im Backend zu sehen noch zu editieren. Sprache 1 ist ganz normal. Der generierte Quelltext im Frontend geht genau bis vor die erste Zeile im Navimodul, also das Navimodul hat keinen Output mehr und danach kommt nix mehr, auch nichts hartkodiertes aus dem HTML-Template.

Ich habe eben (für mich gerade ne Mutprobe ;): das Navi-Modul im Template deaktiviert, dann sind im Frontend alle Sprachen wieder da. Wie passt das Navi-Modul zu den Fehlermeldungen?

Wenn ein Artikel vom Navi-Modul nicht gefunden wird, geht alles kaputt und alles, was nach dem kaputten Modul im Template kommt, wird nicht mehr generiert?

Was habe ich eigentlich als letztes gemacht (vor?) diesem Fehler? Ich weiß nicht, seit wann der Fehler besteht, aber neben normaler Contentarbeit habe ich einen Baum 2 x dupliziert und danach verschoben (innerhalb Sprache 1) ... ist das eventuell eine typische Aktion, um eine Installation zu zerschießen oder die DB zu korrumpieren? Tippst du denn eher auf ne korrupte Datenbank oder eher auf eine korrupte Installation?

Danke und Grüße
K
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Sprachen im Front- und Backend kaputt

Beitrag von xmurrix »

Hallo kloevekorn,

die Ursache scheint das Navi-Modul zu sein, die Funktion output() darin erzeugt warum auch immer eine Endlosschleife. Du solltest die while(1) Bedingung darin begrenzen, z. B. mit max. 1000 Durchläufen, unnd dann herausfinden, was da nicht stimmt.

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.
kloevekorn
Beiträge: 199
Registriert: Mo 31. Okt 2005, 15:26
Wohnort: Hamburg
Kontaktdaten:

Re: Sprachen im Front- und Backend kaputt

Beitrag von kloevekorn »

Danke für den Tipp, ich werde das versuchen.

Ich war ne ganze Zeit weg hier, aber das Contenido-Forum ist immer noch das beste Forum, das ich kenne!
kloevekorn
Beiträge: 199
Registriert: Mo 31. Okt 2005, 15:26
Wohnort: Hamburg
Kontaktdaten:

Re: Sprachen im Front- und Backend kaputt

Beitrag von kloevekorn »

Ganz seltsam, ich habe schon damals immer die obskursten Voodoo-Fehler gehabt.

Diverses Hin- und Her-Testen ergibt folgendes:

- Wenn der Container (CMS_CONTAINER 11)mit dem Navi-Modul deaktiviert ist, dann klappt der Sprachwechsel und die jeweiligen Seiten in den Sprachversionen 2+3 können aufgerufen werden (changelang=2 z.B.)

- Ist das Navi-Modul aktiviert erscheint beim Sprachenaufruf die "leere Seite". Zunächst hatte ich die While(1)-Schleife auf 100 Durchläufe begrenzt - kein Unterschied. Tatsächlich scheint der Modulcode überhaupt keine Rolle zu spielen, denn die schlichte Anweisung 'print "TEST";' hat genau den gleichen Effekt! (echt!)

Es ist auch egal, in welchem CMS_CONTAINER das Modul steckt. Es ist auch nicht auf einen bestimmten Artikel beschränkt. Ich habe das Phänomen auch auf einer brandneuen, versteckten Seite mit Test-Template.

- Danach funktioniert meistens, aber nicht immer :shock: im gleichen Browser auch Sprache 1 nicht mehr und vor dem Modul ist wieder Schluss mit dem Quelltext - Beobachtet in Safari, Chrome und FF. Beobachtet man die Adresszeile findet wohl eine Art Weiterleitung auf die Startseite statt, die aber dann auch nicht mehr angezeigt werden kann. Hier bin ich mir nicht sicher, ob der Fehler für jeden Browser einzeln getriggert werden muss (also ob lokaler Fehler oder die Seite für alle Besucher kaputt ist). Eventuell ja.

- Neustart der Site durch deaktivieren des Moduls, Reload im Frontend, Site ohne Navi sehen, Modul wieder aktivieren, Reload in Sprache 1 und vorerst funktionierts wieder.

-> Also ein einmaliger Aufruf einer Sprachversion hat oft die Folge, dass auch die Deutschen Seiten nicht mehr angezeigt werden können! Unabhängig von der Art des Codes im Modul! Aber doch ist es dieses Modul, denn ist es ganz deaktiviert klappt der Aufruf aller Seiten in allen Sprachen.

Zusammengefasst:
- Sprachen funktionieren bei deaktiviertem Modul.
- Einmaliger Aufruf einer Sprachversion zerstört unter Umständen die Anzeige in allen Sprachen
- Der Fehler tritt unabhängig vom Modulinhalt auf, eine schlichte Printanweisung reicht für den Fehler.
- es geht nur um genau dieses Modul. In meinem Testtemplate verwende ich eine Kopie des Moduls um im Livesystem auf einer versteckten Seite experimentieren können. Genau der gleiche Effekt.

Spätestens hier macht das ganze überhaupt keinen Sinn mehr, ich denke mir den Quatsch aber nicht aus und hoffe auf irgendeine Spur von euch, die ich verfolgen kann ... kann da irgendjemand Schlüsse daraus ziehen?

Eine Neuinstallation oder ähnliches würde ich gerne vermeiden ...

Danke!
Gesperrt