2008-12-01 13 views
21

Php hatalarının tarayıcıda görüntülenmesinin en iyi yöntemi nedir?Üretim sunucularında php hatalarını bastırmanın en iyi yolu

aşağıdaki kullanmak olurdu:

ini_set("display_errors", 1); 

Herhangi en iyi uygulama ipuçları yanı mutluluk duyacağız!

Hataları günlüğe kaydediyorum, sadece display_errors değerinin kapalı (veya 0) olarak ayarlanmasının hataların günlüğe kaydedilmesini engellemediğinden emin olmak istiyorum.

+0

Dediğim gibi yapın ve hatalarınız görüntülenmeyecek, ancak günlüğe kaydedilecektir. –

+0

"En İyi" kelimesini 'En İyi''den daha çok seviyorum. yukarı "syslog" muadil başları gibi – kta

cevap

46

En iyi yol, hatalarınızı görüntülemek veya göz ardı etmek yerine günlüğe kaydetmektir.

Bu örnek, hataları tarayıcıda görüntülemek yerine syslog dosyasına kaydeder.

ini_set("display_errors", 0); 
ini_set("log_errors", 1); 

//Define where do you want the log to go, syslog or a file of your liking with 
ini_set("error_log", "syslog"); // or ini_set("error_log", "/path/to/syslog/file"); 
+0

Eğer bir dosya yolu yerleştirip, istenilen her türlü konuma günlüğü yazabilir. –

3

php.ini kontrolünde olan varsayarsak, bunun yerine olanınıtakabilecek unutmak olabilir (tüm php dosyalarında etrafında döşeme ini_set kodunu sahip bu dosyanın içine global bu değişiklikleri yapabilirsiniz dosyalarınızın bir gün, bu da üretimde kötü olabilir.

1

Ayrıca kod dokunmadan hataları günlüğe apache .htacces kullanabilirsiniz:

<IfModule mod_php5.c> 
    php_flag  display_errors Off 
    php_flag  log_errors  On 
    php_value  error_log  logs/errors 
</IfModule> 
+0

php.ini'yi httpd.conf'dan daha çok kullanmayı tercih ederim, daha açık olacak –

0

iyi yolu? Hataları düzeltin!

sonra hızlı bir geçici çözüm gerekiyorsa o ayar/ciddi hale aksi sessiz hataları ayrıştırmak, çünkü display_errors kapatmak, ancak onları bir yere giriş emin olmak için sorun değil.

1

PHP dağıtım dosyaları maalesef hata iletileri işleme konusunda karışık bir mesaj gönderir. Varsayılan php.ini dosyası, üretim sunucuları ve diğerleri için geliştirme sunucuları için daha uygun bazı ayarlara sahiptir. Sen (yere display_errors = off ama nokta log_errors) eşya dev (error_reporting = E_ALL ve display_errors = On) içinde ve kapalı tüm hataları açmalısınız. Ancak, hata olmadığından emin olmak için elinizden gelenin en iyisini yapın (ya da ele geçirildiğini). Geliştirme makinenizde bir ortam değişkeni ayarlamak için

2

. Ardından, geliştirme ortamında olduğunuzdan emin olmak için ortamınızı kodunuzun başında kontrol edebilirsiniz. sonra error_reporting() işlevini kullanarak PHP'nin hata raporlama düzeyini ayarlayabilirsiniz.

if (isset($_ENV['MY_APP_MODE']) && ($_ENV['MY_APP_MODE'] == 'devel')) { 
    error_reporting(E_ALL); 
} else { 
    error_reporting(0); 
} 
İlgili konular