Jawaban:
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);
Sumber daya Layar Putih Kematian (Halaman Sepenuhnya Kosong) 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 bisa mendapatkan kesalahan fatal tetapi tidak melihatnya. Di situs produksi, pelaporan kesalahan dimatikan. Jika itu masalahnya dan PHP telah menemukan kesalahan yang tidak dapat dipulihkan, baik kesalahan maupun konten tidak akan ditampilkan, oleh karena itu Anda berakhir dengan halaman yang benar-benar kosong.
Apa yang dapat Anda lakukan tentang hal ini adalah mengaktifkan pelaporan kesalahan PHP sehingga menampilkan pesan pada halaman itu sendiri, atau memeriksa file log Anda (dari server) untuk mencari kesalahan. Cara melakukan 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 tag PHP pembuka pertama (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);
Lihatlah log kesalahan Apache, di Ubuntu itu terletak di /var/log/apache2/error.log
sehingga Anda dapat melakukan:
tail -f /var/log/apache2/error.log
sudo tail -f /var/log/apache2/error.log
Saya menemukan cara mudah melacak kesalahan WSOD dengan menjalankan seluruh situs melalui drush
, misalnya:
drush rs
Setelah itu mengakses situs di alamat baru yang diberikan (mis. 127.0.0.1:8080
), Lalu coba mereproduksi masalahnya, 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 debugger, misalnya:
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
ekstensi PHP dan menghasilkan file jejak ( xdebug.auto_trace=1
).
Jika Anda menggunakan drush, Anda dapat melihat pesan kesalahan menggunakan perintah drush-ws.
Saya baru saja mengubah nilai variabel $ update_free_access dari FALSE ke TRUE dan mengeksekusi file update.php. Itu menyelesaikan masalah saya.
Anda dapat mengubah 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.