Layout kann nicht abgespeichert werden

Gesperrt
geo-vital
Beiträge: 2
Registriert: Mi 7. Jan 2009, 17:00
Kontaktdaten:

Layout kann nicht abgespeichert werden

Beitrag von geo-vital »

Anbei die Fehlermeldung. Wir sind neu hier und arbeiten erst seit kurzem mit Contenido. Wir würden uns über eine Hilfestellung freuen.

Warning: mkdir() [function.mkdir]: Unable to access /srv/www/vhosts/domain/httpdocs/cms/version/layout/1/ in /srv/www/vhosts/domain/httpdocs/contenido/classes/class.version.php on line 319

Warning: chmod() [function.chmod]: Unable to access /srv/www/vhosts/domain/httpdocs/cms/version/layout/1/ in /srv/www/vhosts/domain/httpdocs/contenido/classes/class.version.php on line 320

Warning: chmod() [function.chmod]: Datei oder Verzeichnis nicht gefunden in /srv/www/vhosts/domain/httpdocs/contenido/classes/class.version.php on line 320

Warning: fopen() [function.fopen]: Unable to access /srv/www/vhosts/ domain/httpdocs/cms/version/layout/1/1_1231343656.xml in /srv/www/vhosts/domain/httpdocs/contenido/classes/class.version.php on line 323

Warning: fopen(/srv/www/vhosts/domain/httpdocs/cms/version/layout/1/1_1231343656.xml) [function.fopen]: failed to open stream: Datei oder Verzeichnis nicht gefunden in /srv/www/vhosts/domain/httpdocs/contenido/classes/class.version.php on line 323

Warning: fputs(): supplied argument is not a valid stream resource in /srv/www/vhosts/domain/httpdocs/contenido/classes/class.version.php on line 325

Warning: fclose(): supplied argument is not a valid stream resource in /srv/www/vhosts/domain/httpdocs/contenido/classes/class.version.php on line 326

Some error occured: Couldnt Create New Version: /srv/www/vhosts/domain/httpdocs/contenido/classes/class.version.php at line 329 (#0 /srv/www/vhosts/domain/httpdocs/contenido/includes/functions.lay.php(73): Version->createNewVersion() #1 /srv/www/vhosts/domain/httpdocs/contenido/main.php(272) : eval()'d code(1): layEditLayout('1', 'Standard', '', '
timo.trautmann_4fb
Beiträge: 472
Registriert: Di 15. Apr 2008, 15:57
Wohnort: Michelstadt
Kontaktdaten:

Beitrag von timo.trautmann_4fb »

Bitte Ordnerrechte auf Schreibberechtigungen in
/srv/www/vhosts/domain/httpdocs/cms/version/ (und Unterordner) prüfen.
geo-vital
Beiträge: 2
Registriert: Mi 7. Jan 2009, 17:00
Kontaktdaten:

Beitrag von geo-vital »

Wurde gemacht und auf 777 gestellt beim ordner version und den unterordnern.

--> keine änderung
--> kann es an den php oder xml-writer einstellungen liegen?

Bevor der xml-writer im nachhinein installiert wurde kam nur eine Fehlermeldung.
Diese Fehlermeldung wurde durch einen Artikel im Forum auch beschrieben und durch diesen Lösungsvorschlag behoben durch die nachinstallation des xml-writer:

--> http://forum.contenido.org/viewtopic.ph ... =xmlwriter

woher kommt der ordner /1/ ? im pfad: version/layout/1/ im ordner version und layout gibt es den ordner 1 nicht.
Der Z
Beiträge: 10
Registriert: Di 1. Aug 2006, 12:22
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Der Z »

Da ich aufgrund des gleichen Problems selbst gerade am schauen bin ist mir folgendes aufgefallen:

In der functions.lay.php in der funktion layEditLayout() (Zeile 50) wird zwar die idlay als parameter übergeben, aber zwei zeilen weiter wird die idlay aus den globals gezogen und so überschrieben. dascheint bei mir der Grund zu sein warum beim package import das layout nicht geschrieben wird: idlay ist einfach immer NULL.

Ich habe noch nicht ausreichend getestet wie sich das auswirkt, aber so ist es ja mit Sicherheit falsch.

Contenido 4.8.8, file includes/functions.lay.php, Zeile 50 ff:

Code: Alles auswählen

<?php
/**
 * Edit or Create a new layout
 *
 * @param int $idlay Id of the Layout
 * @param string $name Name of the Layout
 * @param string $description Description of the Layout
 * @param string $code Layout HTML Code
 * @return int $idlay Id of the new or edited Layout
 *
 * @author Olaf Niemann <olaf.niemann@4fb.de>
 * @copryright four for business AG <www.4fb.de>
 */
function layEditLayout($idlay, $name, $description, $code) {

    global $client, $auth, $cfg, $sess, $area_tree, $perm, $cfgClient, $idlay;

Gruß,
Z
An eye for an eye will make the whole world blind...
timo.trautmann_4fb
Beiträge: 472
Registriert: Di 15. Apr 2008, 15:57
Wohnort: Michelstadt
Kontaktdaten:

Beitrag von timo.trautmann_4fb »

Ordnerrechte müssen '0777' haben hast du das auch beachtet?
Manache FTP Programme stoßen sich, wenn man die führende 0 nicht angibt.

Die globals Definition ist eine Unschönheit, werde ich mir nochmal anschauen. Im Normalfall sollte die globale Variable aber den gleichen Wert wie der Parameter haben.

Ich kann in meiner Neustallation Layouts speichern daher vermute ich ein serverspezifisches Problem.
Der Z
Beiträge: 10
Registriert: Di 1. Aug 2006, 12:22
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Der Z »

Ich habe es jetzt getestet.
Nachdem ich in Zeile 52 die $idlay aus dem global statement herausgenommen habe, läuft zumindest mein package import samt Layout problemlos durch!

Die $idlay in den globals hat bei mir wärend dem package import den Wert NULL.
Ich wüßte eigentlich auch gar nicht so recht welche idlay da zu diesem Zeitpunkt drin stehen könnte, weil nach meinem Verständnis in diesem Moment gar kein spezielle(r/s) Artikel/Modul ausgeführt, und von daher auch keines von den Layouts benutzt wird, oder verstehe ich da was falsch?

Naja wie dem auch sei - bei mir funzt es jetzt :D

Gruß,
Z
Zuletzt geändert von Der Z am Fr 9. Jan 2009, 16:22, insgesamt 1-mal geändert.
An eye for an eye will make the whole world blind...
timo.trautmann_4fb
Beiträge: 472
Registriert: Di 15. Apr 2008, 15:57
Wohnort: Michelstadt
Kontaktdaten:

Beitrag von timo.trautmann_4fb »

Alles klar danke dir für die Info ich werde es auch nochmal testen.
timo.trautmann_4fb
Beiträge: 472
Registriert: Di 15. Apr 2008, 15:57
Wohnort: Michelstadt
Kontaktdaten:

Beitrag von timo.trautmann_4fb »

Als Fix würde ich erst mal folgendes vorschlagen:

Code: Alles auswählen

global $client, $auth, $cfg, $sess, $area_tree, $perm, $cfgClient, $idlay; 
ersetzen durch

Code: Alles auswählen

global $client, $auth, $cfg, $sess, $area_tree, $perm, $cfgClient;
	
if ((int) $idlay == 0) {
	global $idlay;
}
Der Z
Beiträge: 10
Registriert: Di 1. Aug 2006, 12:22
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Der Z »

Also ich fürchte das gibt ein Problem wenn man die layEditLayout() dazu benutzt ein neues Layout anzulegen. (noch nicht getestet).

In diesem Fall wird ja bewusst FALSE für die idlay übergeben (z.B. class.module.php, Zeilen 651/664). Das intval davon ist 0, somit greift die if Bedingung aus Deinem fix und die idlay würde aus den globals ersetzt.
-> Das wäre aber doch falsch, denn in Zeile 80 wird mit

Code: Alles auswählen

if (!$idlay)

        $tmp_newid = $db->nextid($cfg["tab"]["lay"]);
        $idlay = $tmp_newid;

        $sql = "INSERT INTO ...

    } else {

        $sql = "UPDATE ...

zwischen UPDATE und INSERT unterschieden.
Das neu Anlegen eines Layouts würde dann also nicht mehr funktionieren wie geplant, es sei denn, die globale $idlay hätte selbst einen Wert der FALSE ausgewertet wird (womit dann aber widerum die Ersetzung überflüssig würde). Habe ich etwas übersehen?


Ich würde jedenfalls das global $idlay komplett rauslassen.
Ich habe keine Stelle im contenido code finden können, an der die layEditLayout() ohne idlay aufgerufen wird obwohl das Layout nicht neu angelegt werden soll. (und ich sehe auch nicht wirklich weshalb man das tun wollte).

Ich wüsste auch gar nicht, welche Layout ID ich in der globalen $idlay erwarten könnte/sollte, wenn ich z.B. dabei bin ein package einzulesen.


Gruß,
Z
An eye for an eye will make the whole world blind...
timo.trautmann_4fb
Beiträge: 472
Registriert: Di 15. Apr 2008, 15:57
Wohnort: Michelstadt
Kontaktdaten:

Beitrag von timo.trautmann_4fb »

Danke für den Hinweis. Werde nochmal drüber schauen und sie dann entfernen.
Gesperrt