Clansuite Community Forum

 
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
 
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: Fehler in modulecontroller  (Gelesen 401 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
paulbr
Developer
*****
Offline Offline

Beiträge: 126


« am: Juni 17, 2011, 11:04:45 »

Hallo Jens,

bei mir funktioniert die Clansuite nicht mehr.
Es wird beim Öffnen der News ein Error erzeugt und eine weisse Seite angezeigt.
Im apache-error log steht dann ein 'zend_mm_heap corrupted'.
Das clansuite-error log weisst auf einen fatal error des Include hin.

Der Fehler wird bei mir bei include $entity im modulecontroller.core.php function initModel erzeugt.
Code:
$module_models_path = realpath(ROOT_MOD . mb_strtolower($modulename) . DS . 'model') . DS;

Eine Änderung auf:
Code:
$module_models_path = WWW_ROOT .'modules' . DS . mb_strtolower($modulename) . DS . 'model' . DS;
behebt den Fehler.

Kannst du bitte mal prüfen ob das bei Dir auch der Fall ist?

gruss
paul

-----
EDIT:
folgende datei fehlt:
 /core/gettext/locale-definitions.php
wird im moduleinfocontroller.core.php -> getlanguageInfosForModule darauf verwiesen,
wenn die language datei in einem module nicht vorhanden ist.



Gespeichert
Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« Antworten #1 am: Juni 17, 2011, 05:07:02 »

Hallo,

Fehler: modulecontroller.core.php initModel()
Kann ich nicht nachvollziehen - muss ich erstmal nachforschen.
"zend_mm_heap corrupted" bedeutet, dass der MemoryManager gecrasht ist.
Der Pfad ist nur dann für den MemoryManger relevant, wenn er gecached wird.
Möglicherweise liegt es an der Verwendung von realpath().
Damit wollte ich dem Caching etwas auf die Sprünge helfen - aber es geht auch ohne.
Die Verwendung von WWW_ROOT ist nur für den Templatebereich gedacht, denn da wird ein http://... vorangestellt. Wenn, dann nur ROOT als Konstante voranstellen.

Fehler: Datei "locale-definitions.php fehlt - getlanguageInfosForModule()
Ja, hab ich natürlich vergessen zu committen. Kommt...

Gruß Jens
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
paulbr
Developer
*****
Offline Offline

Beiträge: 126


« Antworten #2 am: Juni 17, 2011, 07:55:35 »

Zitat
Die Verwendung von WWW_ROOT ist nur für den Templatebereich gedacht, denn da wird ein http://... vorangestellt. Wenn, dann nur ROOT als Konstante voranstellen.

Ja hatte ich ausprobiert, hatte ebenfalls nur eine weisse Seite mit Verbindungsabbruch.

Allerdings wird mit dem dark theme, welches die index als Startseite anzeigt (ohne news),
ohne probleme angezeigt, erst wenn ich auf die News gehe kommt dieser Verbindungsabbruch.
Im Standard Theme kommt der Abbruch sofort beim Öffnen der Clansuite.
Wie gesagt im clansuite-dev.com-error.log wird das Include als Fatal Error ausgeworfen.

Irgendwie mag das Include hier keinen realen pfad.

Mit WWW_ROOT wird alles korrekt angezeigt.

----------

Würde es Sinn machen, in dem initModel im else Zweig (wenn model in modules nicht vorhanden ist),
den pfad zum globalen /doctrine/entities/<modulname> zu prüfen, diese zu includieren und erst dann,
wenn dort auch nicht vorhanden, zu sagen "has no model data"?
Hmm..auf der anderen Seite könnte das dann auch der disziplin schaden, es würden dann wohl des öfteren entities + repositories aus bequemlichkeit in den globalen ordner wandern. Zwinkernd

Gespeichert
Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« Antworten #3 am: Juni 18, 2011, 04:41:48 »

Hallo Paul,

Mit WWW_ROOT wird alles korrekt angezeigt.

Schon. Also das falsche WWW_ROOT bewirkt das nicht included wird.
Dadurch entfällt der Fatal error: Cannot redeclare class Entities\News...
Zitat
Würde es Sinn machen, in dem initModel im else Zweig (wenn model in modules nicht vorhanden ist), den pfad zum globalen /doctrine/entities/<modulname> zu prüfen, diese zu includieren und erst dann, wenn dort auch nicht vorhanden, zu sagen "has no model data"?
Das redeclare kommt durch die Pfadregistrierung aller Modelverzeichnisse aller Module in der Doctrine2 Klasse zustande. Das globale Verzeichnis wird ganz am Ende registriert, so dass die (Models der Module) den (Models der Module im globalen Verzeichnis) vorgehen...
Das ist relativ neu. Und ich wollte damit ganzen Aufrufe von initModel() in den Modulinitialisierungen entfallen lassen. Die Abhängigkeiten zwischen den Models statisch zu deklarieren macht irgendwie keinen Sinn für mich. Zudem kann ich das Laden und Cachen Doctrine überlassen.

Ich füge erstmal einen class_exists() Check in die initModels() ein.

Zitat
Hmm..auf der anderen Seite könnte das dann auch der disziplin schaden, es würden dann wohl des öfteren entities + repositories aus bequemlichkeit in den globalen ordner wandern.
Ja, es liegt nahe mit einem globalen Verzeichnis zu arbeiten. Das wäre aber zu einfach und zerbricht auch die (angestrebte) Modularität.

Gruß Jens
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  


Powered by SMF 1.1.16 | SMF © 2006-2009, Simple Machines

Google visited last this page Mai 21, 2012, 05:14:20