web-gelistirme-sc.com

Ölümün beyaz ekranını aldığımda hata mesajlarını nasıl görebilirim?

Üzerinde çalıştığım site beyaz bir ekran aldığında hata mesajlarını nasıl görebilirim?

25
sokratis

Bunu settings.php dosyasının altına yerleştirin:

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

Ölümün Beyaz Ekranı (Tamamen Boş Sayfa) drupal.org'daki kaynak, hata mesajını ve bunlara neden olan yaygın sorunları görmek için sizi adım adım yönlendirecektir.

"Görünmez" Hatalar

Hata bildirimi kapalıysa, önemli bir hata alıyor olabilirsiniz, ancak görmüyorsunuzdur. Bir üretim tesisinde, hata raporlamanın kapatılması yaygındır. Durum böyleyse ve PHP kurtarılamaz bir hataya çarptıysa, ne bir hata ne de içerik görüntülenmez, bu nedenle tamamen boş bir sayfa elde edersiniz.

Bu konuda yapabileceğiniz şey, ya PHP hata raporlamayı açmak, böylece sayfanın kendisinde bir mesaj görüntülemektir) veya hatayı aramak için günlük dosyalarınızı (sunucudan) kontrol etmektir. bunların her ikisini de aşağıda açıklayınız.

Hata Raporlamayı Etkinleştir

Ticari ana bilgisayarlarda ve üretim sitelerinde kapatılmış olsa da (iyi bir nedenle, kullanıcıların hataları görmemesi için), bu hatalar sorun giderme için en iyi araçlarınızdan biridir. Hata raporlamayı etkinleştirmek için, index.php dosyanızı (normalde kök dizininizde bulunur) ilk açılıştan hemen sonra düzenleyin PHP etiketi (gerçek dosya bilgilerini düzenlemeyin!) :

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

Artık doğrudan ekranda meydana gelen hataları görebileceksiniz. Bellek sorunları hala gösterilmeyebilir, ancak bu bir eleme işleminin ilk adımıdır.

Çok siteli bir kurulum kullanıyorsanız ve yalnızca bir site için hataların görünmesini istiyorsanız, önce Ana Bilgisayarın adını aşağıdaki gibi kontrol edin:

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

Update.php çalıştırılırken sorun oluşursa update.php dosyasını bir metin düzenleyicide açın ve aşağıdaki satırı açın:

ini_set('display_errors', FALSE);
17
iStryker

Apache hata günlüğüne bir göz atın, Ubuntu'da /var/log/Apache2/error.log böylece şunları yapabilirsiniz:

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

Tüm siteyi drush üzerinden çalıştırarak WSOD hatalarını izlemenin kolay bir yolunu buldum, örn .:

drush rs

Bundan sonra siteye verilen yeni adresten erişin (örneğin 127.0.0.1:8080), Sorunu yeniden oluşturmaya çalışın ve terminal ekranında tüm hataları göreceksiniz. Özellikle display_errors Başarısız olduğunda (örn. MAMP) PHP'nizi yeniden yapılandırmanıza gerek yoktur.


Hata ayıklayıcıları kullanarak buldum diğer zor yolu, örneğin:

  • OS X:

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

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

    Not: Yukarıdaki gibi drush rs Kullanıyorsanız httpd öğesini php olarak değiştirin.

Veya XDebug PHP uzantısını yükleyin ve bir izleme dosyası oluşturun (xdebug.auto_trace=1).

2
kenorb

Drush kullanıyorsanız, drush-ws komutunu kullanarak hata mesajlarını görebilirsiniz.

1
Manikandan

İndex.php dosyasını değiştirebilir ve bir try/catch ile kodu kapatabilirsiniz. Bunun gibi:

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>';
}

Hata mesajı, hataya neden olan dosya ve kod satırını gösterir.

0
Trincer

Değişken $ update_free_access değerini FALSE yerine TRUE olarak değiştirdim ve update.php dosyasını yürüttüm. Sorunumu çözdü.

0
Saeed Afzal