Eu tenho procurado as respostas para esta pergunta sem sorte alguma. Pelo que observo na estrutura do banco de dados, a localização dos módulos é especificada na tabela 'sistema'. A única solução que tenho é escrever uma consulta SQL para atualizar a coluna 'filename'.
Existe uma solução melhor / mais limpa para resolver isso, por exemplo, um módulo de contribuição?
fonte
registry_file
tabela, o que forçará o drupal a verificar novamente todos os arquivos e reconstruir a tabela.DELETE FROM registry_file;
e adicionei uma chamadarebuild_registry()
no meupage.tpl.php
.Eu restaurei um backup da produção localmente e tentei apenas mover as coisas e pressionar admin / modules ou executar o registry_rebuild (), mas isso não impediu que erros fatais fossem lançados. Isso faz sentido para mim, já que alguns módulos podem usar include ou o que quer que seja em seu hook_init (), ou você pode ter um caminho de roteador de menu definido que depende de um módulo ou que o Drupal não pode encontrar no bootstrap. Por fim, foi o que eu fiz (seus caminhos podem ser diferentes):
Etapa 1: Substitua sites / all / modules por sites / all / modules / contrib
Etapa 2: Substitua sites / all / modules / contrib por sites / all / modules / custom para módulos personalizados no namespace
Etapa 3: Mova os módulos de desenvolvimento para sites / all / modules / dev
Etapa 4: limpe os caches para que as coisas sejam inicializadas corretamente
Nota: Se você usar um módulo personalizado ou um contrib como o LoginToboggan para manipular 403 (acesso negado) e você for desconectado durante esse processo, talvez seja necessário atualizar a
include_file
coluna namenu_roter
tabela para usar o novo caminho para o arquivo de inclusão . Provavelmente é uma ocorrência rara.UPDATE menu_router SET include_file = 'sites/all/modules/custom/my_custom_namespace/includes/foo.inc' WHERE path = 'access-denied'
Depois que essas consultas forem executadas - o que levará apenas uma fração de segundo -, pressione admin / config / development / performance e limpe o cache para que os caminhos do menu sejam reconstruídos.
fonte
update menu_router set include_file = 'sites/all/modules/contrib/logintoboggan/logintoboggan.admin.inc' WHERE path = 'admin/config/system/logintoboggan'; update menu_router set include_file = 'sites/all/modules/contrib/logintoboggan/logintoboggan.validation.inc' WHERE path = 'toboggan/revalidate/%'; update menu_router set include_file = 'sites/all/modules/contrib/logintoboggan/logintoboggan.validation.inc' WHERE path = 'user/validate/%/%/%';
Experimente a ferramenta legal de Mark Sonnabaum: Drush Rebuild Project Paths . Automatiza o processo; funcionou muito bem para mim. Usa Drush , é claro.
Em segundo lugar, sugerirei que você tente fazer isso em uma cópia do banco de dados do site.
fonte
Para o registro, há um ótimo comando drush para reconstruir o registro: http://drupal.org/project/registry_rebuild
Há muitas informações na página do projeto.
fonte
sites/all/modules
quais tinham que ser movidos para ocontrib
subdiretório. Tudo o que eu precisava eradrush dl registry_rebuild; mv OLD_PATH/module NEW_PATH/module; drush rr
drush rr --fire-bazooka
leva a erros, masdrush rr
está bem.Em primeiro lugar, sempre faça backup do seu banco de dados, de maneira simples, você se chutará se algo der errado e você não fez o backup.
Não tenho certeza se isso importa se você desabilita os módulos ou não; você pode querer fazê-lo, apenas por precaução. Então faça o seguinte:
Tudo feito! O Drupal irá procurar todos os módulos instalados.
fonte
Por que você não tenta o módulo Registry Rebuild ? Funcionou toda vez para mim.
Aqui está uma citação sobre ele (na página do projeto do módulo):
fonte
Você pode usar o módulo Registry Rebuild , que se integra ao Drush por meio do
Drush RR
comandoBasicamente, o que você faz são estas etapas:
Eu o aprendi / descobri pela primeira vez através do DrupalEasy Podcast # 133 , que explica mais detalhadamente como esse módulo / drush cmd pode ser usado.
PS: Claro, primeiro faça um backup do seu site ...
fonte
Visite / admin / build / modules, ele reconstruirá os caminhos na tabela do sistema. Às vezes, o drupal não pode mais inicializar, então essa solução não funciona nesse caso. Se não funcionar, você pode usar o Drush Rebuild Project Paths como dito em uma resposta anterior. Você precisa adicionar o novo comando drush antes de interromper a inicialização. Para adicionar o novo comando, consulte a seção COMMANDS do readme
fonte
Eu tive alguns problemas ao
drush dl
não trabalhar devido aos problemas de diretório do módulo. Geralmente eu gosto de respostas de pilha que eu posso simplesmente colar para fazer as coisas funcionarem. Aqui você encontra algumas linhas que instalam o Drush Rebuild Registry e o executam no seu site, se você já estiver no diretório do site apropriado.fonte
Não tenho 100% de certeza sobre uma resposta drupal-esk verdadeira, mas na minha experiência:
Mudei acidentalmente uma das minhas pastas de módulo personalizadas para outra pasta de módulo personalizado ao enviar FTP para o servidor. Os dois ainda trabalhavam. Drupal parecia tê-lo reconhecido como um módulo separado, mesmo enquanto estava na pasta de outro módulo. Não precisei desativar o módulo.
** Este módulo que eu mudei NÃO tinha um arquivo .install, então não tenho certeza se isso importa.
fonte
As distribuições do Drupal não lidam bem com isso; recentemente, depois de terminar acidentalmente com uma cópia da API da entidade em
sites/all/
um site do Panopoly, nada disso funcionou. A reconstrução do registro, o carregamento da página de módulos e tudo o mais causou um erro fatal.Desabilitar o módulo também não é simples, se você precisar mover algo como a API de entidade, exigido por muitos outros módulos no Panopoly.
Para resolver isso, para a API de entidade, você faria algo assim:
Atualize o caminho na tabela do sistema:
Em seguida, recrie o registro:
fonte
Drupal 7
Primeiro de tudo, tente
drush rr
.Se não funcionar, depois de mover os arquivos, tente os seguintes comandos Drush no diretório raiz do Drupal:
Se acima não funcionar, encontre a tabela que ainda possui as informações antigas sobre o caminho:
Se nenhum for encontrado, isso significa que é seu cache externo.
Nesse caso, não esqueça de reiniciá-los, por exemplo:
Veja mais: Qual método é usado para limpar caches no Drupal?
Como alternativa, você pode tentar as seguintes consultas MySQL após mover os arquivos:
fonte
É recomendável mover seus módulos para subpastas contrib / dev / patched / custom. No entanto, não há ganhos de desempenho, isso é feito por razões práticas e estéticas. Isso facilitará a vida de futuros desenvolvedores.
Você pode mover a maioria dos módulos contrib para subpastas sem problemas em um site ativo. Você deve limpar os caches posteriormente. Se você não usar drush e achar que não pode mais acessar a página de limpeza de cache, visite /update.php ou trunque manualmente as tabelas de cache. Eu só tive que fazer o último bit ao mover o módulo da API da entidade.
Mover módulos principais é tecnicamente possível, mas eu não o recomendaria nem vejo nenhuma razão válida para isso.
Atualização: A movimentação de módulos como a API da entidade pode exigir a reconstrução do registro. Confira a página registry_rebuild .
fonte
Você pode simplesmente adicionar um link sym no diretório sites / all / modules apontando para sites / all / contrib. Não tenho certeza se isso resolve o seu problema. Também existem outras soluções, incluindo o perfil de instalação ou um arquivo make drush. Não sei o suficiente para fornecer detalhes sobre eles, mas pelo menos é uma direção que você pode olhar.
fonte