Yanıtlar:
Bunu settings.php dosyasının en 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);
Drupal.org'daki Beyaz Ölüm Ekranı (Tamamen Boş Sayfa) kaynağı, hata mesajını ve bunlara yol açan genel sorunları görmek için size adım adım yol gösterecektir.
"Görünmez" Hataları
Hata bildirimi kapalıysa, önemli bir hatayla karşılaşıyor olabilirsiniz ancak göremiyor olabilirsiniz. Bir üretim sitesinde, hata raporlamanın kapatılması yaygındır. Bu durumda ve PHP kurtarılamaz bir hataya ulaştıysa, ne bir hata ne de bir içerik görüntülenmez, bu nedenle tamamen boş bir sayfa elde edersiniz.
Bununla ilgili yapabilecekleriniz ya PHP hata raporlamasını açmaktır, böylece sayfanın kendisinde bir mesaj görüntüler ya da hatayı aramak için günlük dosyalarınızı kontrol edin (sunucudan). Her ikisinin de nasıl yapılacağı aşağıda açıklanmıştır.
Hata Raporlamayı Etkinleştir
Ticari ana bilgisayarlarda ve üretim sitelerinde (iyi nedenlerden dolayı, kullanıcıların hataları görmemesi için) kapatılmış olmasına rağmen, bu hatalar sorun giderme için en iyi araçlardan biridir. Hata raporlamayı etkinleştirmek için, ilk açılış PHP etiketinden hemen sonra index.php dosyanızı (normal olarak kök dizinde bulunur) geçici olarak düzenleyin (asıl dosya bilgisini düzenlemeyin!):
error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE);
Şimdi doğrudan ekranda meydana gelen hataları görebileceksiniz. Bellek sorunları hala gösterilmeyebilir, ancak bu bir eleme sürecindeki ilk adımdır.
Çok siteli bir kurulum kullanıyorsanız ve yalnızca bir site için hataların görünmesini istiyorsanız, önce olduğu gibi ana bilgisayarın adını 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ışırken bir metin editöründe update.php açıp aşağıdaki satırı açmadan sorun oluşursa:
ini_set('display_errors', FALSE);
Apache hata günlüğüne bir göz atın, içinde bulunduğu Ubuntu'da /var/log/apache2/error.log
şunları yapabilirsiniz:
tail -f /var/log/apache2/error.log
sudo tail -f /var/log/apache2/error.log
drush
Örneğin tüm siteyi çalıştırarak WSOD hatalarını izlemenin kolay bir yolunu buldum :
drush rs
Bundan sonra siteye verilen yeni adresten (örn. 127.0.0.1:8080
) Erişin , sonra sorunu yeniden oluşturmaya çalışın; terminal ekranındaki tüm hataları göreceksiniz. display_errors
PHP'nizi , özellikle başarısız olduğunda (örn. MAMP) yeniden yapılandırmanıza gerek yoktur .
Diğer zor yolla, hata ayıklayıcıları kullanarak buldum, ö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: Değişim httpd
içine php
kullandığınız takdirde drush rs
yukarıdaki gibi.
Veya XDebug
PHP eklentisini yükleyerek bir izleme dosyası ( xdebug.auto_trace=1
) oluşturun.
Drush kullanıyorsanız, drush-ws komutunu kullanarak hata mesajları görebilirsiniz.
$ Update_free_access değişkenini FALSE değerinden TRUE olarak değiştirdim ve update.php dosyasını çalıştırdım. Sorunumu çözdü.
İndex.php dosyasını değiştirebilir ve kodu bir try / catch ile kaplayabilirsiniz. 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 dosyayı ve kod satırını gösterir.