J'ai créé un module via Drupal Console, malheureusement il n'a pas été placé dans son propre dossier, plutôt directement dans /modules/custom
. Avant de remarquer où il était allé, j'ai activé le module.
Dans Drupal 6/7, c'était facile à corriger - je pouvais littéralement simplement mettre les fichiers dans le bon chemin, vider le cache (peut-être reconstruire le registre, ce n'était pas une science exacte), et tout allait bien.
La même chose n'est pas vraie pour Drupal 8; J'ai déplacé les fichiers dans un sous-dossier, reconstruit le cache et toutes les demandes m'indiquent que Drupal ne parvient pas à inclure un fichier requis. Le fichier particulier est une classe de bloc, et le chemin Drupal tente de le trouver est là où il sert d'être, où je suis passé à.
Le peu d'objection de code est dans Symfony ApcClassLoader
, donc je suppose que je dois effacer quelque chose qui est légèrement au-dessus de la tête de Drupal pour obtenir cette référence de chemin d'accès mise à jour.
Comment puis je faire ça?
La désinstallation et la réinstallation du module fonctionnent, mais une fois qu'il y a des données importantes stockées, cela ne sera plus une option.
J'avais tort, désinstaller et réinstaller n'est pas une option viable. Après la désinstallation et la réinstallation, Drupal ne peut plus récupérer les blocs personnalisés définis par le module. Je suppose que la référence est mise en cache quelque part qui n'est pas effacée lorsque le module est désinstallé. Il suffit de savoir où cela se trouve et comment le supprimer ...
ApcClassLoader::findFile()
mauvais chemin provientapc_fetch()
-il ou le chargeur de classe décoré renvoie-t-il le mauvais chemin?Réponses:
Redémarrez simplement Apache. Le cache APC sera alors reconstruit.
Vous pouvez également essayer de frapper rebuild.php ou d'exécuter drush cr. Ceux-ci tentent tous d'effacer explicitement le cache APC.
la source
Une autre solution est mise dans votre settings.php:
la source
Vous devez effacer le cache drupal. Voilà comment le faire avec drush:
la source