it-swarm-id.com

Bagaimana cara melihat pesan kesalahan ketika saya mendapatkan layar putih kematian?

Bagaimana saya bisa melihat pesan kesalahan ketika situs saya bekerja mendapat layar putih?

25
sokratis

Letakkan ini di bagian bawah settings.php:

error_reporting(-1);  // Have PHP complain about absolutely everything 
$conf['error_level'] = 2;  // Show all messages on your screen, 2 = ERROR_REPORTING_DISPLAY_ALL.
ini_set('display_errors', TRUE);  // These lines just give you content on WSOD pages.
ini_set('display_startup_errors', TRUE);
33
Mike

Layar Putih Kematian (Sepenuhnya Halaman Kosong) sumber daya di drupal.org akan memandu Anda melalui langkah-langkah untuk melihat pesan kesalahan serta masalah umum yang menyebabkannya.

Kesalahan "Tak Terlihat"

Jika pelaporan kesalahan dimatikan, Anda mungkin mendapatkan kesalahan fatal tetapi tidak melihatnya. Di situs produksi, pelaporan kesalahan dimatikan. Jika itu yang terjadi dan PHP telah mengenai kesalahan yang tidak dapat dipulihkan, baik kesalahan maupun konten tidak akan ditampilkan, oleh karena itu Anda berakhir dengan halaman yang benar-benar kosong.

Yang dapat Anda lakukan tentang ini adalah mengaktifkan PHP pelaporan kesalahan sehingga menampilkan pesan pada halaman itu sendiri, atau memeriksa file log Anda (dari server) untuk mencari kesalahan. lakukan keduanya dijelaskan di bawah ini.

Aktifkan Pelaporan Kesalahan

Meskipun mungkin dimatikan pada host komersial dan situs produksi (untuk alasan yang baik, sehingga pengguna tidak melihat kesalahan), kesalahan ini adalah salah satu alat terbaik Anda untuk pemecahan masalah. Untuk mengaktifkan pelaporan kesalahan, edit sementara file index.php Anda (biasanya terletak di direktori root Anda) langsung setelah pembukaan pertama PHP tag (jangan edit info file yang sebenarnya!) Untuk menambahkan yang berikut :

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

Anda sekarang dapat melihat kesalahan yang terjadi langsung di layar. Masalah memori mungkin masih belum ditampilkan, tetapi ini adalah langkah pertama dalam proses eliminasi.

Jika Anda menggunakan pengaturan multi-situs dan hanya ingin kesalahan muncul untuk satu situs, maka periksa nama Host terlebih dahulu seperti pada:

if ($_SERVER['HTTP_Host']==='some.domain.name.here') {
  error_reporting(E_ALL);
  ini_set('display_errors', TRUE);
  ini_set('display_startup_errors', TRUE);
}

Jika masalah terjadi saat menjalankan update.php buka update.php dalam editor teks dan batalkan komentar pada baris berikut:

ini_set('display_errors', FALSE);
17
iStryker

Lihatlah log kesalahan Apache, di Ubuntu terletak di /var/log/Apache2/error.log sehingga Anda dapat melakukan:

tail -f /var/log/Apache2/error.log
10
tostinni

Saya menemukan cara mudah melacak kesalahan WSOD dengan menjalankan seluruh situs melalui drush, mis .:

drush rs

Setelah itu mengakses situs di alamat baru yang diberikan (mis. 127.0.0.1:8080), lalu coba mereproduksi masalah, dan Anda akan melihat semua kesalahan pada layar terminal. Tidak perlu mengkonfigurasi ulang PHP Anda, terutama jika display_errors gagal (mis. MAMP).


Cara rumit lain yang saya temukan dengan menggunakan debuggers, mis .:

  • OS X:

    Sudo dtruss -fn httpd 2>&1 | grep -i error
    
  • Linux:

    Sudo strace -f $(pgrep -fn httpd) 2>&1 | grep -i error
    

    Catatan: Ubah httpd menjadi php jika Anda menggunakan drush rs seperti di atas.

Atau menginstal XDebug PHP dan menghasilkan file jejak (xdebug.auto_trace=1).

2
kenorb

Jika Anda menggunakan drush, Anda dapat melihat pesan kesalahan menggunakan perintah drush-ws.

1
Manikandan

Anda dapat memodifikasi index.php dan membungkus kode dengan try/catch. Seperti ini:

try {
    define('DRUPAL_ROOT', getcwd());
    require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    menu_execute_active_handler();
} catch (Error $t) {
    error_log('Error at Line:' . $t->getLine() . ' File: ' . $t->getFile() . ' Message:' . $t->getMessage() );
    print '<div>Message: ' . $t->getMessage() . '</div>';
    print '<div>File:' . $t->getFile() . '</div>';
    print '<div>Line:' . $t->getLine() . '</div>';
}

Pesan Kesalahan akan menampilkan file dan baris kode yang menyebabkan kesalahan.

0
Trincer

Saya baru saja mengubah nilai variabel $ update_free_access dari FALSE ke TRUE dan mengeksekusi file update.php. Itu menyelesaikan masalah saya.

0
Saeed Afzal