Ich habe ein Modul über die Drupal-Konsole erstellt. Leider wurde es nicht in einem eigenen Ordner abgelegt, sondern direkt in /modules/custom
. Bevor ich bemerkte, wohin es gegangen war, aktivierte ich das Modul.
In Drupal 6/7 war dies einfach zu beheben - ich konnte buchstäblich nur die Dateien in den richtigen Pfad einfügen, den Cache leeren (vielleicht die Registrierung neu erstellen, es war keine exakte Wissenschaft) und alles war gut.
Das gleiche gilt nicht für Drupal 8; Ich habe die Dateien in einen Unterordner verschoben, den Cache neu erstellt und alle Anfragen haben mir mitgeteilt, dass Drupal keine erforderliche Datei enthält. Die bestimmte Datei ist eine Blockklasse, und der Pfad, den Drupal zu finden versucht, befindet sich dort, wo sie sich früher befand , und nicht dort, wo ich sie verschoben habe.
Das bisschen Code-Einspruch ist in Symfony's ApcClassLoader
, also muss ich wohl etwas löschen, das etwas über Drupals Kopf liegt, um diese Pfadreferenz zu aktualisieren.
Wie kann ich das machen?
Das Deinstallieren und erneute Installieren des Moduls funktioniert, aber sobald wichtige Daten gespeichert sind, ist dies keine Option mehr.
Ich habe mich geirrt, Deinstallation und Neuinstallation sind keine praktikable Option. Nach der Deinstallation und Neuinstallation kann Drupal die vom Modul definierten benutzerdefinierten Blöcke nicht mehr abrufen. Ich vermute, dass die Referenz an einer Stelle zwischengespeichert wird, die bei der Deinstallation des Moduls nicht gelöscht wird. Ich muss nur herausfinden, wo das ist und wie ich es klären kann ...
ApcClassLoader::findFile()
immer den falschen Weg ausapc_fetch()
oder ist der dekorierte Class Loader den falschen Weg der Rückkehr?Antworten:
Starten Sie einfach Apache neu. Der APC-Cache wird dann neu erstellt.
Sie können auch versuchen, rebild.php zu drücken oder drush cr auszuführen. Alle versuchen explizit, den APC-Cache zu leeren.
quelle
Eine andere Lösung finden Sie in Ihrer settings.php:
quelle
Sie sollten den Drupal-Cache leeren. So geht das mit Drush:
quelle