"O site encontrou um erro inesperado. Por favor, tente novamente mais tarde."


27

Eu tenho esse erro com o Drupal 7

  1. como posso obter mais informações sobre esse erro? Qualquer relatório, qualquer log em qualquer lugar? Nada em erros de php.

  2. como posso desativar essa mensagem e ter uma mais útil para fins de depuração?

Nota : minha pergunta NÃO é "como posso corrigir este problema"

Respostas:


27

Este erro vem de uma exceção PHP não capturada . Drupal captura exceções para que nenhuma mensagem de erro feia do PHP seja exibida ao usuário. Você pode encontrar as informações da exceção no link 'Mensagens recentes de log' em Relatórios (ou tente este caminho: / admin / reports / dblog). Verifique se o módulo 'Registro de banco de dados' está ativado, porque este módulo fornece este relatório.

Você verá todas as mensagens internas que foram geradas. Filtre por tipo 'PHP' e Gravidade 'erro' e provavelmente encontrará uma mensagem sobre uma exceção não capturada. Isso está causando o seu problema. Agora você tem mais informações para poder corrigi-las.


Ok, obrigado. Portanto, não existe uma maneira imediata de alterar esse comportamento para um mais compatível com a depuração? (como ... exibindo a exceção na tela)
respondeu

Não, AFAIK não há uma maneira fácil de fazer isso. Você pode tentar configurar seu próprio manipulador de exceções (usando a função PHP padrão set_exception_handler), mas tenha cuidado com os efeitos colaterais.
Sanzante

7
Ótima idéia para verificar /admin/reports/dblog. A menos, é claro, que você não consiga sequer fazer login, porque esse erro estúpido invadiu todo o site do drupal!
G33kz0r

Eu mesmo, vi esse erro com a viewreference "FieldException: Tentativa de criar um campo desconhecido ..." A solução para eu habilitar o drush en viewreference funcionou - estou trabalhando com outras pessoas e puxando suas atualizações git para obter o código do módulo, mas precisa ativar o módulo (como o enable está no banco de dados, que não estou recebendo na solicitação pull, estamos usando os Recursos). Espero que isso ajude outras pessoas.
Therobyouknow #

4
@ g33kz0r: Você pode usar o drush watchdog-show para ver as mensagens de erro ou, se o seu site estiver completamente quebrado, verifique a tabela de watchdog no banco de dados em que essas mensagens estão armazenadas.
sanzante 11/09/14

15

Drupal 6 e 7

Se estiver usando Drush, basta fazer drush vset error_level 1.

Caso contrário, vá para " /admin/config/development/logging" e altere a configuração para "Erros e avisos"

Drupal 8

Em vez de drush vset/ vget/ vdel, você pode usar cset/ cget/ cdelpara valores de configuração e sset/ sget/ sdelpara valores de estado.


12

JEITO FÁCIL

Edite seu settings.php e adicione uma linha lá (especialmente no seu site de desenvolvimento, você pode apenas manter isso)

$conf['error_level'] = 1;

drush requer que você seja capaz de inicializar o banco de dados.


A melhor resposta. Isso economizou meu tempo.
Austin

6

MANEIRA FÁCIL para Drupal 8 ,

se você não puder mais fazer login para acessar as mensagens de log recentes, conforme descrito na resposta aceita.

Abra o arquivo /sites/default/settings.phpcom um editor ou cliente ftp e adicione esta linha:

$config['system.logging']['error_level'] = 'verbose';

Após recarregar a página, você verá uma mensagem de erro completa, em vez da genérica “O site encontrou um erro inesperado. Por favor, tente novamente mais tarde."


2

Esse erro vem _drupal_log_error().

Como uma solução rápida para o desenvolvimento, você pode atualizar essa função para fornecer mensagens de erro mais detalhadas, mas certifique-se de alterá-la novamente antes que o site seja publicado :)


0

Confira o dblog. É o melhor lugar para encontrar erros em um site Drupal. Verifique também o console JS para detectar erros adicionais no seu navegador.


Obrigado pelo dblog (/ admin / reports / dblog). Agora, como posso desativar essa mensagem e ter uma mais útil para fins de depuração?
theredled

11
De qualquer forma, eu não acho que um erro de JS possa causar esse erro de servidor ...
respondeu

0

Verifique na watchdogtabela no MySQL. Você pode baixar o Blob (a variablescoluna) e abri-lo com o Bloco de Notas. Ele mostrará um objeto serializado com seu erro.


0

Tente o seguinte:

nível de erro

admin menu equivalent: admin/config/development/logging
drush command: drush vset -y error_level <value>
values:
    0: none
    1: errors and warnings
    2: all 

0

Para tornar os erros visíveis no seu site Drupal, localize o arquivo index.php no diretório principal do seu site. Abra index.php e adicione esse código diretamente antes da primeira linha do arquivo:

error_reporting(E_ALL); 
ini_set('display_errors', TRUE); 
ini_set('display_startup_errors', TRUE); 

Você também pode tentar resolver problemas do Drupal com logs de erros, conforme descrito aqui ..


0

Este é um tópico antigo, mas como encontrei esse mesmo problema recentemente, forneci minhas entradas. Não consegui acessar nenhum dos caminhos do Drupal, pois estava sempre recebendo esse erro, não importa o quê. Isso começou a acontecer depois que eu atualizei uma exibição, então sabia o que precisava ser feito, mas não consegui abrir a exibição. Assim, examinei os logs do servidor Apache. Além da solução fornecida acima, como examinar drush e dblogs, pode ser útil examinar os logs do servidor Apache, especialmente quando você não pode acessar nenhum dos caminhos do aplicativo. Eles geralmente estão presentes no arquivo \ logs \ error.log e terão os detalhes sobre a exceção não tratada e o local onde ela é gerada etc. Como uma solução rápida, você pode comentar o código que está lançando uma exceção e fazer atualizações no aplicativo. No meu caso, comentei a postagem de código que consegui acessar a visualização e fazer as atualizações necessárias. Espero que ajude alguém em algumas situações semelhantes


0

Isso é muito interessante, mas se você abrir a fonte da página (CTRL-U), todos os avisos e mensagens de erro estarão lá, eles estarão apenas em um elemento oculto. Pesquise por element-invisible.

Editar: $conf['error_level'] = 1;deve ser colocado no settings.phparquivo também.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.