CONTENIDO 4.10.2-dev und PHP 8.2

Fragen zur Installation von CONTENIDO 4.10? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: CONTENIDO 4.10.2-dev und PHP 8.2

Beitrag von xmurrix » Do 29. Feb 2024, 19:31

Hallo Bodil,
...Ich habe für die Installation die 4.10.2-dev hochgeladen, ins cms-Verzeichnis habe ich die Unterordner des alten Systems gelegt, auf die Datenbank den Dump in eine neue Tabelle. Dann habe ich das Setup (Update) aufgerufen...
so, wie ich das verstehe, hast du beim Update nicht eine vorhandene Installation überschrieben, sondern die 4.10.2-dev hochgeladen und nur den Inhalt des alten Mandantenverzeichnisses (cms) in die neue Installation übernommen.

Normalerweise sollte man die neue Version einfach in die vorhandene alte Version kopieren, allerdings muss man aufpassen, dass man damit nicht eigene Änderungen im Mandantenverzeichnis (cms) überschreibt. Ein Nachteil dieser Vorgehensweise ist aber auch, dass dadurch Dateien aus der alten Installation übrigbleiben können, die es in der neuen Version nicht gibt.

Mit deiner Vorgehensweise hat man eine neue und saubere Installation. Aber hier muss man noch beachten, dass man das data-Verzeichnis im CONTENIDO-Installationsordner nicht vergisst. Unter data/config/{umgebungsname}/ sind gewisse Konfigurations-Dateien, die eventuell übernommen werden sollten, z. B. die "config.local.php" geben, in der benutzerdefinierte Konfigurationen stehen. Die "config.clients.php" ist da auch drin, und die ist auch wichtig, weil darin ein Teil der Mandantenkonfiguration enthalten ist, die es so nicht in der con_clients-Tabelle gibt, dazu zählen auch die Pfade. Deshalb wird bei dir die "config.clients.php" mit leeren Pfaden erstellt.

Die Pfadangaben sind aus der con_clients-Tabelle herausgeflogen, als man die Mandantenkonfiguration auf das Dateisystem umgezogen hat. Wir können uns überlegen, die Mandantenkonfiguration wieder in der Datenbank zu speichern, um bei Bedarf die "config.clients.php" daraus neu generieren zu können.

Gruß
Murat
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.

bodil
Beiträge: 340
Registriert: Fr 7. Okt 2011, 04:10
Kontaktdaten:

Re: CONTENIDO 4.10.2-dev und PHP 8.2

Beitrag von bodil » Fr 1. Mär 2024, 09:59

Hi Murat,
meine Installation ist zwar das Update einer bestehenden Seite, liegt aber auf einem anderen Server und existiert nur zum Zweck der Erprobung von Umbauten. Daher (völlig andere Umgebung) habe ich das bestehenden data-Verzeichnis auch nicht übernommen, sondern das jungfäuliche aus dem Installationspaket. Das cms/data/-Verzeichnis habe ich aber übernommen.
Ich habe versucht die Ursache für den Fehler zu ergründen, komme da aber an meine Grenzen. Generiert wird die config.clients.php wohl in der Funktion updateClientCache() in der functions.general.php. Die bei mir fehlenden Einträge basieren auf Werten in der globalen Variable $cfgClient. Die Variable ist in meinem Fall aber ein leeres Array. Entsprechend kommt eine Menge Warnungen im Error-Log:

Code: Alles auswählen

Undefined array key "path" in (...)/contenido/includes/functions.general.php on line 581
wobei die Zeilenangabe naturgemäß variiert.
Warum $cfgClient leer ist, wie man das ändern oder damit umgehen könnte, wo das doch alles irgendwann im Setup passiert ...Da bin ich raus, fürchte ich. :-/
Lieben Grüße!
Bodil

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

Re: CONTENIDO 4.10.2-dev und PHP 8.2

Beitrag von xmurrix » Fr 1. Mär 2024, 13:06

Hallo Bodil,

kopiere die "data/config/{umgebungsname}/config.clients.php" aus der alten Installation in die neue Installation, danach sollte das Setup durchlaufen und die "config.clients.php" korrekt aktualisieren.

Bei einem Update, du hast ja die DB und das "cms/" Verzeichnis aus der alten Installation verwendet, musst du auch die "config.clients.php" aus der alten Installation übernehmen.

Nicht alle Informationen zu einem Mandanten stehen in der Datenbank drin, darum braucht die Aktualisierung der "config.clients.php" bei einem Update die alten Werte, die in der "config.clients.php" stehen, vor allem folgende zwei:

Code: Alles auswählen

...
$cfgClient[{clientId}]["path"]["frontend"] = "/pfad/zum/mandantenordner/cms/";
$cfgClient[1][{clientId}]["htmlpath"] = "https://hostname/cms/";
...
Das passiert in der Funktion updateClientCache() in functions.general.php, die Pfade werden aus der globalen Variable $cfgClient übernommen:

Code: Alles auswählen

    foreach ($cfgClient as $id => $aclient) {
        if (is_array($aclient)) {
            $htmlPaths[$id] = $aclient['path']['htmlpath'];
            $frontendPaths[$id] = $aclient['path']['frontend'];
        }
    }
Danach wird die "config.clients.php" aus den Daten von zuvor und den Daten aus der DB neu zusammengebaut. Hast du keine "config.clients.php", klappt das dann nicht.

Das sollte man im CONTENIDO überarbeiten, damit alle Informationen in die DB geschrieben werden und die "config.clients.php" aus den Daten der DB neu gebaut werden kann.

Gruß
Murat
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.

bodil
Beiträge: 340
Registriert: Fr 7. Okt 2011, 04:10
Kontaktdaten:

Re: CONTENIDO 4.10.2-dev und PHP 8.2

Beitrag von bodil » Fr 1. Mär 2024, 14:21

Hallo Murat,
ich glaube, das gabs schon mal, dass alle Mandanteninformationen in der Datenbank standen. Ich denke aber, dass das das Problem nicht löst. Wenn ich die config.clients.php vor dem Update zur Verfügung stelle, kracht es spätestens, wenn das System checkt, ob alle Verzeichnisse beschreibbar sind, weil die absoluten Pfade in der config.clients.php nicht zur neuen Umgebung passen und die Verzeichnisse, die da getestet werden sollen, nicht existieren. (Ich mache Updates NIE an Ort und Stelle. Vielleicht auf demselben Server in einer anderen Subdomain, aber NIE mit demselben Pfad.)
Ich könnte mir vorstellen, dass man Updates ohne existierende config.clients.php in diesem Punkt behandelt wie Neuinstallationen: Während des Setups werden Pfade vorgeschlagen, wenn die zu korrigieren sind, kann man sie dort korrigieren.
Was ich auch für denkbar hielte: für die Mandanten zusätzlich einen relativen Serverpfad zum contenido-Verzeichnis in der config.clients.php zu speichern. Der absolute Mandantenpfad kann davon dann im Setup abgeleitet und wie gehabt in der config.clients.php eingetragen werden.
Viele Grüße!
Bodil

dermicha
Beiträge: 95
Registriert: Mi 9. Dez 2009, 17:57
Kontaktdaten:

Re: CONTENIDO 4.10.2-dev und PHP 8.2

Beitrag von dermicha » Do 14. Mär 2024, 09:51

Hallo bodil,
ich habe die 4.10.2 zwar noch nicht installiert, aber bisher habe ich bei Updates mit einem zusätzlichen Pfadwechsel vor dem Setup immer die config.clients.php aus der alten Installation genommen (wie von Murat beschrieben) und die internen Serverpfade der Mandanten vorab manuell angepasst. Ist kein großer Aufwand und von 4.9.12 auf 4.10.1 hat das einwandfrei funktioniert.
Viele Grüße
Michael

bodil
Beiträge: 340
Registriert: Fr 7. Okt 2011, 04:10
Kontaktdaten:

Re: CONTENIDO 4.10.2-dev und PHP 8.2

Beitrag von bodil » Fr 22. Mär 2024, 15:09

Ich habe die neuste Version jetzt ein paarmal eingesetzt und bin sehr happy damit!
Aber zwei Skurilitäten sind mir bei der Installation noch aufgefallen:
Da war zum Beispiel die Fehlermeldung
Sie aktualisieren von einer früheren CONTENIDO Version auf 4.9.[sic!] In der Version 4.9 wurden einige Verzeichnisse / Dateien in andere Bereiche ausgelagert.
Da war ich doch etwas durcheinander, auch wenn die Ursache (uralte Datenbank) schnell gefunden war.
Etwas problematischer war, dass Contenido die Datenbank checkt und sich dabei über unzureichende Fremdschlüsselzuweisungen (oder was auch immer) beschwert hat, die sich allerdings allesamt auf Tabellen bezogen haben, die mit Contenido nichts zu tun hatten und auch einen anderen Prefix haben. Ich musste diese Tabellen löschen, sonst wäre das Update nicht weitergegangen. Seltsam.

Antworten