"Il sito Web ha riscontrato un errore imprevisto. Per favore riprova più tardi."


27

Ho questo errore con Drupal 7

  1. come posso avere ulteriori informazioni su questo errore? Qualsiasi rapporto, qualsiasi registro ovunque? Niente negli errori php.

  2. come posso disabilitare quel messaggio e averne uno più utile a scopo di debug?

Nota : la mia domanda NON è "come posso risolvere questo problema"

Risposte:


27

Questo errore proviene da un'eccezione PHP non rilevata . Drupal rileva le eccezioni, quindi all'utente non viene visualizzato alcun brutto messaggio di errore PHP. Puoi trovare le informazioni sull'eccezione nel link "Messaggi di registro recenti" su Rapporti (oppure provare questo percorso: / admin / reports / dblog). Assicurati che il modulo "Registrazione database" sia abilitato perché questo modulo fornisce questo rapporto.

Vedrai tutti i messaggi interni che sono stati generati. Filtra per tipo "PHP" e gravità "errore" e probabilmente troverai un messaggio su un'eccezione non rilevata. Questo sta causando il tuo problema. Ora hai più informazioni in modo che tu possa essere in grado di risolverlo.


Ok grazie, quindi non esiste un modo predefinito per modificare questo comportamento in uno più conforme al debug? (come ... mostrando l'eccezione sullo schermo)
stato il

No, AFAIK non esiste un modo semplice per farlo. Puoi provare a impostare il tuo gestore eccezioni (usando la funzione standard PHP set_exception_handler) ma fai attenzione agli effetti collaterali.
sanzante,

7
Ottima idea da controllare /admin/reports/dblog. A meno che, ovviamente, non sia nemmeno possibile effettuare il login perché questo stupido errore ha cancellato l'intero sito drupal!
g33kz0r,

Io stesso ho visto questo errore con viewreference "FieldException: tentativo di creare un campo sconosciuto ..." La soluzione per me abilitare drush en viewreference ha funzionato - Sto lavorando con altre persone e sto estraendo i loro aggiornamenti git in modo da ottenere il codice del modulo ma è necessario abilitare il modulo (poiché l'abilitazione è nel database, che non ottengo nella richiesta pull, stiamo utilizzando le funzionalità). Spero che questo aiuti altre persone.
therobyouknow,

4
@ g33kz0r: è possibile utilizzare il drush watchdog-show per visualizzare i messaggi di errore o se il sito è completamente danneggiato, consultare la tabella dei watchdog nel database in cui sono memorizzati tali messaggi.
sanzante,

15

Drupal 6 e 7

Se usi Drush, fallo drush vset error_level 1.

In caso contrario, vai su " /admin/config/development/logging" e modifica l'impostazione in "Errori e avvisi"

Drupal 8

Invece di drush vset/ vget/ vdel, puoi usare cset/ cget/ cdelper i valori di configurazione e sset/ sget/ sdelper i valori di stato.


12

MODO SEMPLICE

Modifica il tuo settings.php e aggiungi una riga lì (specialmente sul tuo sito di sviluppo, puoi semplicemente tenerlo acceso)

$conf['error_level'] = 1;

drush richiede di essere in grado di avviare il database.


La migliore risposta Mi ha risparmiato tempo.
Austin,

6

MODO FACILE per Drupal 8 ,

se non riesci più ad accedere per accedere ai messaggi di registro recenti come descritto nella risposta accettata.

Apri il file /sites/default/settings.phpcon un editor o client ftp e aggiungi questa riga:

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

Dopo aver ricaricato la pagina, verrà visualizzato un messaggio di errore completo, anziché il generico "Il sito Web ha riscontrato un errore imprevisto. Per favore riprova più tardi."


2

Questo errore viene _drupal_log_error().

Come soluzione rapida per lo sviluppo potresti aggiornare quella funzione per fornire messaggi di errore più dettagliati, ma assicurati assolutamente di cambiarlo prima che il sito diventi attivo :)


0

Controlla il dblog. È il posto migliore per trovare errori in un sito Web Drupal. Controlla anche la console JS per individuare ulteriori errori nel tuo browser.


Grazie per dblog (/ admin / reports / dblog). Ora, come posso disabilitare quel messaggio e averne uno più utile a scopo di debug?
rovesciò il

1
Ad ogni modo, non credo che un errore JS possa causare
quell'errore del

0

Controlla nella watchdogtabella in MySQL. È possibile scaricare il BLOB (la variablescolonna) e aprirlo con Blocco note. Ti mostrerà un oggetto serializzato con il tuo errore.


0

Prova questo:

livello di errore

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

Per rendere visibili gli errori sul tuo sito Web Drupal, trova il file index.php nella directory principale del tuo sito. Apri index.php e aggiungi questo codice direttamente prima della prima riga del file:

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

Puoi anche provare a risolvere i problemi di Drupal con i log degli errori come descritto qui.


0

Questo è un vecchio thread, ma di recente ho riscontrato questo stesso problema fornendo i miei input. Non sono stato in grado di accedere a nessuno dei percorsi Drupal in quanto ho sempre ricevuto questo errore, non importa quale. Questo è iniziato dopo che ho effettuato un aggiornamento di una vista, quindi sapevo cosa era necessario fare ma non ero in grado di aprire la vista. Così ho guardato nei registri del server Apache. A parte la soluzione sopra indicata come guardare drush e dblogs può essere utile invece guardare nei log del server Apache specialmente quando non è possibile accedere a nessuno dei percorsi dell'applicazione. Questi di solito sono presenti nel file \ logs \ error.log e avranno i dettagli sull'eccezione non gestita e sul luogo in cui viene generato ecc. Come soluzione rapida puoi commentare il codice che sta generando un'eccezione e aggiornare l'applicazione. Nel mio caso ho commentato il post in codice che sono stato in grado di visualizzare e apportare gli aggiornamenti necessari. Spero che possa aiutare qualcuno in alcune situazioni simili


0

Questo è molto interessante, ma se apri l'origine della pagina (CTRL-U) allora tutti gli avvisi e i messaggi di errore sono lì, sono solo in un elemento nascosto. Cerca element-invisible.

Modifica: $conf['error_level'] = 1;dovrebbe essere inserito anche nel settings.phpfile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.