Temeller

PHP, hataları bir takım iç hata koşuluna karşılık olarak raporlar. Bu hatalar, farklı koşullarda bir işaretçi olarak kullanılabilir ve ihtiyaca göre gösterilip / günlüklenebilir.

PHP tarafından oluşturulan her hata bir türe sahiptir. Bu türlerin bir listesi, beraberinde hangi durumlarda karşılaşılacağı ve davranışın kısa bir açıklaması ile mevcuttur.

PHP ile hata işlemek

Eğer hiçbir hata işleyici belirlenmemişse, PHP hataları yapılandırmasına bağlı olarak işleyecektir. Hangi hataların raporlandığı ve hangilerinin gözardı edildiği error_reporting adlı php.ini yönergesi ile kontrol edilir ya da işleyiş sürecinde error_reporting() işlevi çağırılır. Bununla birlikte, bazı hatalar betiğiniz çalıştırılmaya başlanmadan meydana gelebildiğinden, yapılandırma yönergelerinin ayarlanması şiddetle tavsiye edilir.

Bir geliştirme ortamında, PHP tarafından üretilen sorunları fark etmeniz ve çözmeniz gerektiğinden, error_reporting yönergesini daima E_ALL olarak yapılandırmalısınız. Üretimde ise, E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED gibi daha az ayrıntılı bir seviyeye ayarlamak isteyebilirsiniz. Ancak bir çok durumda olası sorunlar hakkında erken uyarı sağlayabileceği için E_ALL da uygundur.

PHP'nin bu hatalarla ne yapacağı az sonra değineceğimiz iki php.ini yönergesine bağlıdır. display_errors hatanın betik çıktısının bir parçası olarak gösterilip gösterilmeyeceğini denetler. Hata veritabanı parolaları gibi hassas bilgiler içerebileceğinden, üretim ortamında bu ayar her zaman etkisiz kılınmış olmalıdır. Ancak geliştirme ortamında, hataların anında raporlandığından emin olabilmek için etkin hale getirmek çoğu zaman kullanışlı olacaktır.

Hataların gösterilmesine ek olarak, PHP log_errors yönergesi etkinleştirildiğinde hataları günlükleyebilir. Bu tüm hataları error_log ile belirlenen bir dosyaya ya da sistem raporlama aracına günlükleyecektir. Hataları günlükleyebildiğiniz ve daha sonra bu hataları temel alarak raporlama yapabileceğiniz için bu yönerge üretim ortamlarında ziyadesiyle kullanışlı olabilir.

Kullanıcı hata işleyiciler

Eğer PHP'nin öntanımlı hata işleyicileri yetersizse, bir çok hata türünü kendi hata işleyicilerinizle set_error_handler() yönergesini kurarak işleyebilirsiniz. Bazı hata türleri bu şekilde işlenemese de, işlenebilen hatalar betiğinizin uygun gördüğü şekilde işlenebilecektir. Örneğin, bu özelleştirilmiş bir hata sayfasının kullanıcıya gösterilmesi ve daha sonra ayrıntılı bilginin e-posta aracılığı ile günlüklenmesi olabilir.