2011-12-19 47 views
6

Bazen kötü biçimlendirilmiş bir PHP koduna sahip olacağım ve 500 hata alacağım. Windows 7 dizüstü bilgisayarında Apache 2.2 çalıştırıyorum. IDE olarak PhpStorm'u kullanmaya başladım.PHP 5.3 - Sorun Giderme 500 Hata - Hata ayıklama - Ayrıştırma Hataları

Bu hataları yakalamanın ve satır numarasından haberdar olmanın en iyi yolu nedir? Neden OOP ile ilgili sözdizimi hataları 500 hata atıyor ve işlev sorunları normal hatalara dönüşme eğilimindedir?

Sözdizimi hatası örneği: İki punto yerine tek bir kolon içeren bir sınıftan statik bir yöntem çağrısı.

UPDATE: Lütfen kabul edilen yanıtlara ve tüm yorumlara bakın.

+0

ile çalışma zamanında tüm bu kontrol edebilir? Kod, bir sözdizimi hatası nedeniyle ayrıştırılamıyorsa, web sunucusundan, derlemelerdeki (kullanıcı için değil) günlüklerdeki derleme hatası ayrıntılarını içeren bir 500 bekleyeceğim. – David

cevap

12

PHP, "500" ile, E_PARSE, E_ERROR ve yakalanmamış istisnalar gibi önemli bir Hatayla karşılaştığında yanıt verecektir. 500, "Dahili Sunucu Hatası" için HTTP yanıt kodudur - istek işlenirken kurtarılamaz bir şey oldu. tercihen E_ALL - - Php.ini olarak

bir gelişme makinede, (en az) E_NOTICE için error_reporting seviyesini belirlesin ve display_errors açık olduğundan emin olun. Bu, "500" hataları dahil olmak üzere tarayıcıdaki hata mesajını gösterecektir.

Ayrıca Apache hata günlüklerinizi de kontrol edebilirsiniz, hatalar burada listelenir, log_errors php.ini içinde etkin olduğu sürece. Varsayılan olarak, bu <apache_ServerRoot>\logs\error.log'da olacaktır.

Ayrıca ben "normal hatalar" ile ne demek emin değilim ini_set() ve error_reporting()

+0

Bu statik durum bir E_PARSE hatası olmalıdır. Sorunu bulmak çok zordu - daha iyi bir yol olması gerektiğini düşünüyordum. – BuddyJoe

+0

error_reporting açık. +1 Ve saat dilimi ayarlandı. – BuddyJoe

+0

@brunot, "error_reporting" ile mesaj görmüyorsanız, olasılıklar "display_errors" kapalı. Hata mesajının çıkmayacağı durumlar vardır, ancak bu sadece PHP ile dahili olarak çok yanlış bir şey olduğunda ve çökerse gerçekten geçerlidir. Bu olduğunda, genellikle Apache kayıtlarında size * bu * olduğunu söyleyen bir mesaj vardır, hata ayıklama olmasına rağmen * neden oldu * aslında çok zor olabilir. Bu durumda, komut dosyasını komut satırından * çalıştırarak * bazen * yararlı bir hata iletisi alır, ancak her zaman değil. – DaveRandom