“Situs web mengalami kesalahan yang tidak terduga. Silakan coba lagi nanti. "

27

Saya memiliki kesalahan ini dengan Drupal 7

  1. bagaimana saya dapat memiliki lebih banyak informasi tentang kesalahan ini? Ada laporan, ada log di mana saja? Tidak ada dalam kesalahan php.

  2. bagaimana saya bisa menonaktifkan pesan itu dan memiliki yang lebih berguna untuk tujuan debug?

Catatan : pertanyaan saya BUKAN "bagaimana saya bisa memperbaiki masalah ini"

gaduh
sumber

Jawaban:

27

Kesalahan ini berasal dari pengecualian PHP yang tidak tertangkap . Drupal menangkap pengecualian sehingga tidak ada pesan kesalahan PHP jelek ditampilkan kepada pengguna. Anda dapat menemukan info pengecualian di tautan 'Pesan log terbaru' pada Laporan (atau coba jalur ini: / admin / laporan / dblog). Pastikan modul 'Pencatatan basis data' diaktifkan karena modul ini menyediakan laporan ini.

Anda akan melihat semua pesan internal yang telah dihasilkan. Saring berdasarkan jenis 'PHP' dan Severity 'error' dan Anda mungkin akan menemukan pesan tentang pengecualian yang tidak tertangkap. Ini yang menyebabkan masalah Anda. Sekarang Anda memiliki lebih banyak informasi sehingga Anda dapat memperbaikinya.

sanzante
sumber
Oke terima kasih, jadi apakah tidak ada cara yang tidak biasa untuk mengubah perilaku ini menjadi perilaku yang lebih sesuai dengan debug? (seperti ... menampilkan pengecualian pada layar)
diputar
Tidak, AFAIK tidak ada cara mudah untuk melakukan itu. Anda dapat mencoba mengatur handler pengecualian Anda sendiri (menggunakan fungsi standar PHP set_exception_handler) tetapi waspadai efek samping.
sanzante
7
Ide bagus untuk diperiksa /admin/reports/dblog. Kecuali, tentu saja, Anda bahkan tidak bisa masuk karena kesalahan bodoh ini telah menyaring seluruh situs drupal Anda!
g33kz0r
Saya sendiri, melihat kesalahan ini dengan viewreference "FieldException: Mencoba membuat bidang yang tidak diketahui ..." Solusinya bagi saya mengaktifkan drush dan viewreference bekerja - saya bekerja dengan orang lain dan menarik pembaruan git mereka sehingga saya mendapatkan kode modul tetapi saya perlu mengaktifkan modul (karena memungkinkan ada di database, yang saya tidak dapatkan dalam permintaan tarik, kami menggunakan Fitur). Semoga ini bisa membantu orang lain.
therobyouknow
4
@ g33kz0r: Anda dapat menggunakan showdog drush show untuk melihat pesan kesalahan atau jika situs Anda benar-benar rusak, periksa tabel watchdog di database tempat pesan-pesan itu disimpan.
sanzante
15

Drupal 6 & 7

Jika menggunakan Drush, lakukan saja drush vset error_level 1.

Jika tidak, buka " /admin/config/development/logging" dan ubah pengaturan menjadi "Kesalahan dan Peringatan"

Drupal 8

Alih-alih drush vset/ vget/ vdel, Anda bisa menggunakan cset/ cget/ cdeluntuk nilai-nilai konfigurasi dan sset/ sget/ sdeluntuk nilai-nilai negara.

coak
sumber
12

JALAN MUDAH

Edit settings.php Anda dan tambahkan baris di sana (terutama di situs dev Anda, Anda bisa membiarkan ini tetap)

$conf['error_level'] = 1;

Drush mengharuskan Anda untuk dapat mem-bootstrap basis data.

Frank Carey
sumber
Jawaban TERBAIK. Ini menghemat waktu saya.
Austin
6

CARA MUDAH untuk Drupal 8 ,

jika Anda tidak dapat login lagi untuk mengakses pesan log terbaru seperti yang dijelaskan dalam jawaban yang diterima.

Buka file /sites/default/settings.phpdengan editor atau klien ftp dan tambahkan baris ini:

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

Setelah memuat ulang halaman Anda akan melihat pesan kesalahan penuh, bukannya generik "Situs web mengalami kesalahan yang tidak terduga. Silakan coba lagi nanti. "

4k4
sumber
2

Kesalahan itu berasal _drupal_log_error().

Sebagai perbaikan cepat untuk pengembangan, Anda dapat memperbarui fungsi itu untuk memberikan lebih banyak pesan kesalahan verbose, tetapi pastikan Anda mengubahnya kembali sebelum situs ditayangkan :)

Clive
sumber
0

Periksa dblog. Ini adalah tempat terbaik untuk menemukan kesalahan dalam webite Drupal. Periksa juga konsol JS untuk mengambil kesalahan tambahan di browser Anda.

Binny
sumber
Terima kasih untuk dblog (/ admin / laporan / dblog). Sekarang, bagaimana saya bisa menonaktifkan pesan itu dan memiliki yang lebih berguna untuk tujuan debug?
theredled
1
Pokoknya, Saya tidak berpikir bahwa kesalahan JS dapat menyebabkan bahwa server error ...
theredled
0

Periksa di watchdogtabel di MySQL. Anda dapat mengunduh Blob ( variableskolom) dan membukanya dengan Notepad. Ini akan menampilkan objek serial dengan kesalahan Anda.

Maxime Fafard
sumber
0

Coba ini:

tingkat kesalahan

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

Untuk membuat kesalahan terlihat di situs web Drupal Anda, cari file index.php di direktori utama situs Anda. Buka index.php dan tambahkan kode ini langsung sebelum baris pertama file:

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

Anda juga dapat mencoba Mengatasi Masalah Drupal Dengan Log Kesalahan seperti dijelaskan di sini ..

Chetabahana
sumber
0

Ini adalah utas lama tetapi ketika saya menemukan masalah yang sama baru-baru ini memberikan masukan saya. Saya tidak dapat mengakses jalur Drupal karena saya selalu mendapatkan kesalahan ini, apa pun yang terjadi. Ini mulai terjadi setelah saya memperbarui tampilan sehingga saya tahu apa yang perlu dilakukan tetapi saya tidak dapat membuka tampilan. Jadi saya melihat log server Apache. Terlepas dari solusi yang diberikan di atas seperti melihat drush dan dblogs, mungkin lebih membantu untuk melihat log server Apache terutama ketika Anda tidak dapat mengakses jalur aplikasi mana pun. Ini biasanya ada di bawah file \ logs \ error.log dan akan memiliki perincian tentang pengecualian tidak tertangani dan tempat pembuatannya, dll. Sebagai perbaikan cepat Anda dapat mengomentari kode yang melempar pengecualian dan membuat pembaruan ke aplikasi. Dalam kasus saya, saya mengomentari kiriman kode yang saya dapat melihat dan membuat pembaruan yang diperlukan. Semoga itu akan membantu seseorang dalam beberapa situasi serupa

MAJ
sumber
0

Itu sangat menarik tetapi jika Anda membuka sumber halaman (CTRL-U) maka semua peringatan dan pesan kesalahan ada di sana, mereka hanya dalam elemen tersembunyi. Cari element-invisible.

Sunting: $conf['error_level'] = 1;harus ditempatkan dalam settings.phpfile juga.

endo64
sumber