module_invoke: Cache löschen / Funktion nicht gefunden? [SOLVED: Bin ein Idiot :) ]
am 04.11.2007 - 18:37 Uhr in
Hi,
ich habe zwei Module geschrieben, und das eine beim anderem mit module_invoke eingefügt. Bisher hat das alles auch wunderbar funktioniert, nur jetzt habe ich eine Funktion umbenannt und module_invoke findet sie jetzt nicht mehr. Wird das irgendwo von Drupal gecached, oder von PHP oder Apache selbst??
Vorher:
function mod2_minipage($nid) { ... }
hat wunderbar funktioniert mit module_invoke('mod2','minipage',$node->nid);
Nachher:
function mod2_pagemini($nid) { ... }
wird nicht mehr gefunden von module_invoke('mod2','pagemini',$node->nid);
Ich habe das ganze dann noch überprüft mit function_exists(), und komischerweise behauptet PHP minipage noch zu finden, pagemini aber nicht?? Ich habe spaßeshalber jetzt nochmal mit module_invoke die minipage aufgerufen und eine neue Funktion mod2_minipage geschrieben, angezeigt wird jetzt aber was die alte Funktion gezeigt hätte, also auf jeden Fall irgendwie ein Caching Problem.
Das ganze findet auf meinem lokalen Server statt, also garantiert keine Frage von FTP-Upload vergessen oder so... naja, wenn irgendwer eine Idee hat, wäre ich für jede Hilfe dankbar!
- Anmelden oder Registrieren um Kommentare zu schreiben
Cache-Modus aktiv?
am 04.11.2007 - 19:14 Uhr
Ist denn unter admin/settings/performance der Caching-Modus deaktiviert? Und Dein Browser-Cache auch??
Yup, beide caches sind
am 04.11.2007 - 19:23 Uhr
Yup, beide caches sind deaktiviert. Habe zusätzlich jetzt auch noch das devel module installiert, komme aber trotzdem nicht wirklich weiter. Bin jetzt zum alten Funktionsnamen zurückgekehrt, aber egal was ich in der Funktion dann verändere, ich bekomme immer wieder nur das Original angezeigt, muss also irgendwie noch ein Caching issue sein.
anderer Versuch
am 04.11.2007 - 19:37 Uhr
noch ein Versuch:
http://api.drupal.org/api/function/cache_clear_all/5
Ganz anderer Ansatz: änderst Du in der richtigen Datei im richtigen Pfad?? Ich hatte auch schon mal so was mit einer Verwechselung - da sucht man dann sehr lange, bis man mal drüber geschlafen hat ...
Nützliche Frage also: was könnte es sein, wenn es nicht das Caching ist?
Hey, danke für deine Tipps.
am 04.11.2007 - 19:54 Uhr
Hey, danke für deine Tipps. Bisher leider immer noch kein Glück. Habe mit clear_cache_all rumgespielt, aber das hilft nicht. Den Fehler inzwischen etwas näher noch eingekreist: Es geht wirklich nur um das eine Module: Wenn ich irgendwo anders im Code etwas ändere ist das kein Problem, nur bei diesem einen Module scheint das gar keinen Unterschied zu machen.
Der Datei-Pfad stimmt, habe das manuell nochmal überprüft, das ist 100% der richtige. Wenn es kein Cache Problem ist, dann weiß ich auch nicht mehr weiter. Habe inzwischen den folgenden Test gebaut:
In mod2.module einfach
function mod2_insult() { print "INSULT"; }
eingefügt. In meinem mod1 theme jetzt versucht darauf zu verlinken mit direktem Aufruf: mod2_insult(); - dann bekomme ich einen
Fatal error: Call to undefined function nodebook_insult() in .../mod1_theme.inc on line 8
Alles etwas sehr verwirrend. Andere Funktionen in der gleichen Datei kann ich nämlich aufrufen (auch wenn ich dann nur die alte (irgendwo gecachte?!?!?!) Version bekomme. Zwei Ideen noch:
- Kann PHP/Apache aus unerfindlichen Gründen beschließen eine Datei zu cachen? Macht eigenltlich keinen Sinn??
- hat die mod2_menu($may_cache) Funktion vielleicht irgendetwas damit zu tun? Wüsste auch nicht wie, aber weil da halt cache vorkommt .. habe die caching Funktion von Drupal aber garantiert ausgeschaltet ...
Was Du beschreibst, klingt
am 04.11.2007 - 20:13 Uhr
Was Du beschreibst, klingt wirklich danach, als würde es 2 Dateien geben: eine die Du änderst und eine, die als Modul eingebunden ist.
Die Möglichkeit eines Caching Proxyservers schliesse ich aus, da Du ja andere Änderungen auf der Site problemlos machen kannst und diese auch sichtbar sind, nehme ich an.
Das letzte, was mir einfällt, wenn die Modul-Datei wirklich die richtige ist, wäre via phpMyAdmin sämtliche cache* tables von Hand u leeren. (Ich hab' das selber nie gemacht, keine Gewähr!!)
Problem gelöst
am 04.11.2007 - 20:28 Uhr
Fuck, fuck, fuck. Vielen Dank für die Hilfe nochmal!! Hatte noch ein backup des modules im module Ordner liegen und Drupal hat sich eben entschieden sich das stattdessen anzuschauen. :) Alles wieder im grünen Bereich!