Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 16. Oktober 2013 11:00

Klenkes
Server-Pate
Ort: 89428 Syrgenstein
Registriert: 17. Dezember 2010
Beiträge: 1.437

[GELÖST] Class 'Content' not found in ... ErrorPage.inc.php bei Upgrade

Bei mir kommt es immer mal wieder vor, dass ein Upgrade beim Step-6 hängen bleibt.
Step 6 wäre bei Erfolg: The core modules are up to date

Im Errorlog steht dann:

PHP Fatal error:  Class 'Content' not found in
xxx/www/lib/classes/contenttypes/ErrorPage.inc.php on line 35,
referer: http://xxxx.de/install/upgrade.php

ErrorPage.inc.php Line 35:

class ErrorPage extends Content
{
  var $doAliasCheck;
  var $error_types;
...

So gerade bei einem Upgrade von 1.11.7 auf 1.11.9

Mir bleibt nichts anderes übrig als das Upgradescript hier abzubrechen und in's Backend zu wechseln, wo aber alles in Ordnung zu sein scheint. Core-Module sind da und alle arbeiten einwandfrei.
Eine Livesite, bei der das schon auftrat, arbeitet seit Wochen oder Monaten ohne Fehler.

Ich konnte bisher keinen Forenpost finden, in dem das Problem schon mal beschrieben wurde.
Die einzigste Gemeinsamkeit aller betroffenen Sites war, dass sie Module einsetzten, die in die Contentypes eingriffen.
1x AC und 1x Cataloger
Das werde ich weiter verfogen, so bald ich Zeit finde.

Es macht mich irgendwie nervös...

Offline

#2 17. Oktober 2013 11:53

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] Class 'Content' not found in ... ErrorPage.inc.php bei Upgrade

Die einzigste monkey Gemeinsamkeit aller betroffenen Sites war, dass sie Module einsetzten, die in die Contentypes eingriffen.
1x AC und 1x Cataloger

Liegt meiner Meinung nach am Cataloger.
Der erweitert die Klasse "Content".
Bei der Installation/beim Upgrade werden die ContentTypes aber vom Autoloader ausgeschlossen.
Daher kann beim Upgrade von Modulen, die den Inhaltstyp "Content" erweitern, die Klasse nicht gefunden werden.
Bin mir noch nicht sicher, ob das ein Fehler im Modul oder im CMSms Core ist.

AC erweitert nicht die Klasse des Standard-Inhaltstypen sondern des Modul-Inhaltstypen. Der liegt im Lib-Verzeichnis und wird daher auch immer vom Autoloader gefunden.

Das Problem ist, CMSms geht beim Update die Module alle der Reihe nach alphabetisch durch um sie automatisch zu aktualisieren - falls sie das unterstützen. Verursacht ein Modul bereits beim Laden des Moduls einen fatalen Fehler können alle Module, die danach kommen, nicht automatisch aktualisiert werden. Das betrifft allerdings nur Drittanbieter-Module. Die Core-Module werden vorher separat aktualisiert. Solange im Backend alle Module auf dem neuesten Stand sind, sollte alles okay sein. Im schlimmsten Fall musst Du alle Module von Hand selber aktualisieren. (Aber selbst das dürfte nie passieren, weil die Module, sobald sie geladen werden und sich ihre Versionsnummer im PHP Code von der in der DB unterscheidet und sie die automatische Aktualisierung unterstützen, werden sie eh wieder aktualisiert, sobald man im Backend auf Erweiterungen->Module geht.)

Ist vom Software-Design einfach unschön gelöst, aber ich weiß nicht, ob die Module das im Konstruktor selber abfangen müssen, oder ob das Aufgabe des CMSms Core ist.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#3 17. Oktober 2013 12:20

Klenkes
Server-Pate
Ort: 89428 Syrgenstein
Registriert: 17. Dezember 2010
Beiträge: 1.437

Re: [GELÖST] Class 'Content' not found in ... ErrorPage.inc.php bei Upgrade

Das Autoaktualisieren der Module hat bisher immer prima funktioniert. Ich checke auf jeden Fall immer alles genau.

Beim Projekt gestern war AC 0.9.4.3 im Einsatz, aber kein Cataloger.
Sonst die üblichen Module wie Formbuilder, Gallery, Statistics, und SiteMapMadeSimple.

Der Fehler ist ärgerlich aber kein Killer.
Ich versuche mal auf einer Testinstallation das Ganze nachzuvollziehen.

Offline

#4 18. Oktober 2013 12:12

Klenkes
Server-Pate
Ort: 89428 Syrgenstein
Registriert: 17. Dezember 2010
Beiträge: 1.437

Re: [GELÖST] Class 'Content' not found in ... ErrorPage.inc.php bei Upgrade

Ich hab' mal ein paar Test gemacht, und ich glaube, die Ursache gefunden zu haben.

Eine Standardinstallation von 1.11.7 mit entweder AC oder Cataloger, oder beiden, zeigte das Problem beim Upgrade auf 1.11.9 nicht.
Also muss es an etwas Anderem liegen.


Gewöhnlich deinstalliere ich alle Module, die ich für eine Website nicht brauche, und lösche auch die Modulordner.
Beim Upgrade auf eine neue Version lade ich per FTP aber wieder die fehlenden Coremodule mit hoch, die nicht installiert waren! z.B. Search, CMSPrinting und den ThemeManager.
Wenn ich nun das Upgrade durchlaufen lasse stoppt der Prozess an Schritt 6.

Installiere ich Search, CMSPrinting und den ThemeManager vor dem Upgrade, läuft es fehlerlos durch.

Es liegt also weder am Cataloger noch an AdvancedContent, sondern an...
...an was eigentlich?

Mache ich hier einen groben Fehler?
Müssen zum Upgrade immer alle Coremodule vorhanden sein?

Offline

#5 18. Oktober 2013 14:06

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] Class 'Content' not found in ... ErrorPage.inc.php bei Upgrade

Ich halte das für einen Fehler im Core von CMSms. Zum einen liegt das Problem darin, dass CMSms die Inhaltstypen beim Update nicht automatisch lädt. Zum anderen unterstützen alle Module automatisch die Funktion "AllowAutoInstall", es sei denn sie geben explizit etwas anderes an (tun allerdings die wenigsten). Außerdem sollte der CMS-Cache vor dem Update gelöscht werden, nicht erst danach. (Passiert nämlich erst in Schritt 7)

Durch AllowAutoInstall() wird in Deinem Fall das SearchModul neu installiert. Das SearchModul will bei der Installation den Suchindex aktualisieren. Dazu lädt es alle Seiten. Beim Laden der Seiten funkt wieder der CMS-Zwischenspeicher dazwischen. Genauer diese contentcache.php. D.h. das Inhaltsobjekt wird aus dem Cache erstellt. Dadurch wird das Laden der zugehörigen Inhaltstypen noch ein zweites mal umgangen, weil diese nämlich nur geladen werden, wenn das Inhaltsobjekt komplett neu generiert werden muss. Wenn jetzt aus dem Cache ein Inhaltsobjekt erzeugt wird, welches von einem anderen Inhaltstypen abgeleitet wird, kommt es zu diesem Fehler.

Ganz konkrekt verusacht bei Dir eine Seite vom Typ ErrorPage diesen Fehler. Denn diese wird auch von der Klasse Content abgeleitet.

Lösche mal vor dem Update den Zwischenspeicher oder dektiviere die Fehler-Seite und teste das ganze mal erneut.

Diese Vorgehensweise sollte das in Zukunft vermeiden:
- Im Backend einloggen und den Wartugsmodus aktivieren
- CMS-Zwischenspeicher löschen
- Ausloggen
- Updgrade durchführen


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#6 18. Oktober 2013 16:32

Klenkes
Server-Pate
Ort: 89428 Syrgenstein
Registriert: 17. Dezember 2010
Beiträge: 1.437

Re: [GELÖST] Class 'Content' not found in ... ErrorPage.inc.php bei Upgrade

WOW! Das liest sich ja wie ein Krimi  wink

Wenn ich mich nicht täusche, kommt aber schon ein paar Schritte vorher: Clearing cache if any...

Ich probier das nachher mal genau so.

Offline

#7 18. Oktober 2013 16:52

Klenkes
Server-Pate
Ort: 89428 Syrgenstein
Registriert: 17. Dezember 2010
Beiträge: 1.437

Re: [GELÖST] Class 'Content' not found in ... ErrorPage.inc.php bei Upgrade

Wartungsmodus und Cache löschen hat keinen Effekt.
Schritt 4:
Clearing site cache (if any)...
Bei Schritt 6 kommt wieder der Fehler.

CMSPrinting, Search und ThemeManager waren vorher nicht installiert und wurde durch 1.11.9 übernommen.
Nach dem Ende bei Schritt 6 logge ich mich ins Backend ein, und sehe, dass nur CMSPrinting autoinstalliert war. Search und ThemeManager nicht.
Ein erneutes Aurfufen von upgrade.php erzeugt weiter bei Schritt 6 den Fehler.

Erst wenn ich im Backend Search installiere, läuft das Upgradescript fehlerfrei durch.

Damit hattest du Search schon richtig als den Täter identifiziert!
Werde ich mir für die Zukunft merken.

Offline

#8 18. Oktober 2013 21:24

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] Class 'Content' not found in ... ErrorPage.inc.php bei Upgrade

Schritt 4:
Clearing site cache (if any)...

Stimmt.
Hab mich beim Code-Lesen ins Script für die Installation verirrt.
Am Cache liegt's nicht.

Hast Du bei Deinen Seiten im Seitenbaum zufällig eine Seite vom Typ "ErrorPage" bevor eine Seite vom Typ "Content" kommt? Ich kann mir das nur mit der Reihenfolge erklären. Weil Die Inhaltstypen erst geladen werden, wenn sie das erste Mal gebraucht werden. Wenn zuerst der Inhaltstyp "ErrorPage" geladen wird, dann fehlt ja der Typ "Content" von dem die Fehlerseite ja abgeleitet wird. Und da fehlende Inhaltstypen beim Update prinzipiell nicht über den Autoloader geladen werden (weiß der Geier warum), klappt das alles leider nicht.

WOW! Das liest sich ja wie ein Krimi  wink

cool


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#9 19. Oktober 2013 22:34

Klenkes
Server-Pate
Ort: 89428 Syrgenstein
Registriert: 17. Dezember 2010
Beiträge: 1.437

Re: [GELÖST] Class 'Content' not found in ... ErrorPage.inc.php bei Upgrade

NaN schrieb:

Hast Du bei Deinen Seiten im Seitenbaum zufällig eine Seite vom Typ "ErrorPage" bevor eine Seite vom Typ "Content" kommt?

Ich habe eigentlich immer eine Errorseite, und so auch in diesem Testfall.
Allerdings hat sie die vorletzte ContentID und ist ganz hinten(unten) eingeordnet. Alle Seiten mit Typ Content kommen also vorher.

Ich hab das Upgrade nochmal von 1.11.7 auf 1.11.9 laufen lassen, und es ist tatsächlich so, dass es an SEARCH hängt. Installiere ich es vorher läuft das Upgrade durch, und alle Module, die über die 1.11.9 neu reingekommen sind, werden automatisch installiert. Selbst ThemeManager.
Das spricht auch für den alphabetischen Durchlauf, da der ThemeManager vorher nicht automatisch installiert wurde, da bei Search abgebrochen wurde. S vor T!

Offline