PHP'de pek çok uyarı çeşidi vardır. Bunlar:
Tablo 15-1. PHP uyarı çeşitleri
Değer | Sabit | Tanım | Not |
---|---|---|---|
1 | E_ERROR | hayati çalışma hataları | |
2 | E_WARNING | çalışma uyarıları (hayati olmayan hatalar) | |
4 | E_PARSE | derleme sırasında ayrıştırma hataları | |
8 | E_NOTICE | çalışma sırasındaki bildirimler (uyarılardan daha az önemli) | |
16 | E_CORE_ERROR | PHP'nin iç yapısıyla ilgili, başlatılmasını engelleyen hayati hatalar | sadece PHP 4 |
32 | E_CORE_WARNING | PHP'nin iç yapısıyla ilgili, başlatılması ile ilgili uyarılar (hayati olmayan hatalar) | sadece PHP 4 |
64 | E_COMPILE_ERROR | hayati derleme hataları | Sadece PHP 4 |
128 | E_COMPILE_WARNING | derleme sırasındaki uyarılar (hayati olmayan hatalar) | sadece PHP 4 |
256 | E_USER_ERROR | kullanıcının yarattığı hata mesajı | sadece PHP 4 |
512 | E_USER_WARNING | kullanıcının yarattığı uyarı mesajı | sadece PHP 4 |
1024 | E_USER_NOTICE | kullanıcının yarattığı bildiri mesajı | sadece PHP 4 |
E_ALL | desteklendikleri sürece, yukarıdakilerin hepsi |
Yukarıdaki değerler (sayısal veya sembolik) hangi hataların bildirileceğini belirleyen bit maskesini oluştururken kullanılır. Bu değerleri birleştirmeyi veya bazılarını maskelemeyi bit-tabanlı işlemler ile yapabilirsiniz. php.ini içinde sadece '|', '~', '!' ve '&' işlemlerinin anlaşılacağına, ve php3.ini içinde hiçbirinin anlaşılmayacağına dikkat edin.
PHP 4'te öntanımlı error_reporting değeri E_ALL & ~E_NOTICE'dir ve anlamı E-NOTICE-seviyesi dışındaki tüm hataların ve uyarıların bildirilmesidir. PHP 3'de öntanımlı ayar (E_ERROR | E_WARNING | E_PARSE)'dır ve anlamı öncekiyle aynıdır. Fakat dikkat edin ki, PHP 3'ün php3.ini dosyasında sabitler desteklenmediğinden error_reporting ayarı sayısal olmak durumundadır; az önce belirtilen değer de 7'ye denk gelir.
Başlangıç değeri ini dosyasında error_reporting direktifiyle, Apache'nizin httpd.conf dosyasında php_error_reporting (PHP 3 için php3_error_reporting) direktifiyle, ve son olarak çalışma esnasında betik içinden error_reporting() fonksiyonuyla belirlenebilir.
Uyarý |
Sunucularınızı veya kodlarınızı PHP 3'ten PHP 4'e güncellerken bu ayarları ve error_reporting() fonksiyonu çağrımlarını kontrol etmelisiniz, yoksa istemeyerek yeni hata çeşitlerinin bildirimlerini kapatabilirsiniz, özellikle E_COMPILE_ERROR'u. Bu, hatanın ne ve nerede olduğuna dair hiç bir bilgi bırakmadan betiklerinizin tamamiyle boş sayfalar üretmesine yolaçabilir. |
Tüm PHP ifadeleri @ ön-ekiyle çağrılabilir. Bu ön-ek, o ifade için hata bildirimini kapatacaktır. Eğer böyle bir ifade sırasında hata oluşursa, ve track_errors özelliği aktifse, hata mesajını $php_errormsg genel değişkeninde bulabilirsiniz.
Not: @ hata-kontrol işlemi ön-eki, ayrıştırma hatalarını kapatmayacaktır.
Uyarý |
Şu an için @ hata-kontrol işlemi ön-eki betik sonlandırılmasına yol açacak kritik hataların bile gösterilmesini engelleyecektir. Diğer şeylerin dışında, bu demektir ki @ ön-ekini belli fonksiyonlardan gelecek hataları bastırmak için kullanırsanız, ve bu fonksiyonlar tanımlı değilse, betik nedeni belirtilmeden sonlandırılacaktır. |
Aşağıda PHP'deki hata kontrolü işlemlerinin kullanımına ilişkin bir örnek bulacaksınız. Burada bilgileri XML formatında bir günlükte saklayan ve programcıya kritik hatalarda e-mail yollayan bir hata işleme fonksiyonu tanımlıyoruz.
Hata İşleme ve Günlük fonksiyonları hakkında basit bir örnek.Ayrıca bkz. error_reporting(), error_log(), set_error_handler(), restore_error_handler(), trigger_error(), user_error()