Eu criei um módulo através do Drupal Console, infelizmente ele não foi colocado em uma pasta própria, e sim diretamente /modules/custom
. Antes de perceber para onde havia ido, ativei o módulo.
No Drupal 6/7, isso era fácil de corrigir - eu podia literalmente simplesmente colocar os arquivos no caminho correto, limpar o cache (talvez reconstruir o registro, não era uma ciência exata) e tudo estava bem.
O mesmo não se aplica ao Drupal 8; Movi os arquivos para uma subpasta, recompilei o cache e todas as solicitações informam que o Drupal não está conseguindo incluir o arquivo necessário. O arquivo em particular é uma classe de bloco, e o caminho que o Drupal está tentando encontrar é onde costumava estar, não para onde eu o mudei.
O pouco de objeção de código está no Symfony ApcClassLoader
, então acho que preciso limpar algo que está um pouco acima da cabeça do Drupal para atualizar essa referência de caminho.
Como eu posso fazer isso?
Desinstalar e reinstalar o módulo funciona, mas quando houver dados importantes armazenados, não será mais uma opção.
Eu estava errado, desinstalar e reinstalar não é uma opção viável. Após desinstalar e reinstalar, o Drupal não pode mais pegar os blocos personalizados que o módulo define. Suponho que a referência seja armazenada em cache em algum lugar que não seja limpo quando o módulo for desinstalado. Só preciso descobrir onde está e como limpá-lo ...
ApcClassLoader::findFile()
obtendo o caminho erradoapc_fetch()
ou o carregador de classes decorado está retornando o caminho errado?Respostas:
Apenas reinicie o apache. O cache da APC será reconstruído então.
Você também pode tentar pressionar rebuild.php ou executar drush cr. Todos esses tentam limpar explicitamente o cache da APC.
fonte
Outra solução é colocada em seu settings.php:
fonte
Você deve limpar o cache do drupal. É assim que se faz com drush:
fonte