Seite 1 von 1

IIS: HTML-Templates werden in der Vorschau nicht generiert

Verfasst: Do 14. Jun 2007, 14:50
von kypta
Ich habe auf einem Microsoft-IIS/4.0 mit PHP 4.3.2 und MySql 3.23.28-gamma und Contenido 4.6.15 dieses Problem:

Seiten, die Module eingebunden haben, die HTML-Templates benötigen, werden in der Vorschau im Backend nicht korrekt angezeigt.

Z.B. eine simple Seite mit HTMLHead und HTMLText sowie der standard-Hauptnavigation wird so angezeigt in der Vorschau:
Das ist ein HTMLTitel
Das ist ein HTMLText
templates/navfirst_off.html
Wenn ich die Vorschau aufrufe, wird auch dieser Fehler im error.log mitgeschrieben:
[14-Jun-2007 15:26:17] MySQL error :
SELECT
idclient,
frontendpath,
htmlpath,
errsite_cat,
errsite_art
FROM
con_clients
[14-Jun-2007 15:26:17] next_record called with no query pending.
Dieser Fehler wird auch produziert, wenn ich den Editor aufrufe - nur funktioniert im Editor alles, auch die Templates werden richtig umgesetzt.

Wenn ich mit dem Mozilla Firefox den Editor aufrufe, kommt noch diese Browser-Meldung:
Configuration file undefindedmozileConfig.xml could not be loaded!
Aber das ist ja evtl. eher ein lokales Problem. Der IE hat keine solchen Probleme.

Gruss
Thomas

Verfasst: Do 14. Jun 2007, 16:40
von kypta
Nun, die SQL-Abfrage wird ja offensichtlich durch die Funktion rereadClients() in functions.general.php ausgeführt. Der Aufruf dazu findet in contenido\external\backendedit\front_content.php statt.

Ich habe hier im Forum schon gelesen, dass man in der functions.general.php alle $db_systemprop zu $db umbenennen muss. Hatte ich auch gemacht um andere Feher zu beseitigen.

Ebenso habe ich im Forum gesehen, dass in der besagten front_content.php die Zeile

Code: Alles auswählen

include_once ($cfgClient[$client]["path"]["frontend"]."config.php");
nicht funktioniert. Nur tut sie das nicht etwa nicht, weil $client nicht da wäre - $client ist vorhanden. Was anscheinend nicht vorhanden ist, das ist der Inhalt von $cfgClient - was das error.log doch zu bestätigen schein, richtig?

Die Frage scheint also zu sein, warum rereadClients() unter meinem IIS nicht zu einer befüllten $cfgClient führt.

-> Als Fix habe ich in der besagten front_content.php den include fest gecodet im sinne von:

Code: Alles auswählen

include_once ("e:/wwwroot/meinserver.de/cms/config.php");
Damit funktioniert "alles" (was ich bisher probiert habe) ausser der Vorschau im Backend. Aber ich mag solche dirty-fix-Methoden nicht.

Nehme jede Idee dankend entgegen.

Gruss
Thomas

Verfasst: Do 14. Jun 2007, 16:44
von emergence
also viel einfallen tut mir da nicht...
vielleicht das irgendein modul was mit chdir macht ??

bau mal auf der seite folgendes ein (am besten beim modul hauptnavigation)

Code: Alles auswählen

<?php
echo getcwd()."<br>";
?>
ist das, was dir dann angezeigt wird, im editor und bei der vorschau unterschiedlich ?

Verfasst: Do 14. Jun 2007, 17:02
von kypta
getcwd() ergibt folgendes Resultat:

Editor: e:\wwwroot\meinserver.de\cms
Vorschau: e:\wwwroot\meinserver.de\contenido\external\backendedit
Frontend: e:\wwwroot\meinserver.de\cms

Verfasst: Do 14. Jun 2007, 17:43
von kypta
Nun gut, ich habe in der /contenido/external/backendedit/front_content.php noch diese Zeile:

Code: Alles auswählen

chdir($cfgClient[$client]["path"]["frontend"]);
durch diese ersetzt:

Code: Alles auswählen

chdir("e:/wwwroot/meinserver.de/cms/");
Das funktioniert, nur bleiben natürlich die Fehlermeldungen im error.log.

Die Frage nach $cfgClient bleibt also bestehen...

Verfasst: Do 14. Jun 2007, 18:05
von kypta
Ah, ich habe die Lösung!

In der functions.general.php musste ich bei rereadClients() den code ändern, von:

Code: Alles auswählen

if (!is_object($db))
	{
		$db = new DB_Contenido;
	}
zu:

Code: Alles auswählen

//	if (!is_object($db))
//	{
		$db = new DB_Contenido;
//	}
Somit steht dann die $cfgClient mit Inhalt zur Verfügung in der backendedit/front_content.php und ich muss meine Konfiguration nicht mehr manuell verdrahten.

Warum das if nicht funkt weiss ich aber auch nicht.