PHP

Tüm PHP Hatalarını Görüntüle: Temel ve Gelişmiş Kullanım

Bir PHP uygulaması, yürütülmesi sırasında birçok farklı düzeyde kazanç ve hata üretebilir. Bu hataları görebilmek, hatalı çalışan bir uygulamada sorun gidermeye çalışan geliştiriciler için çok önemlidir. Ancak geliştiriciler genellikle PHP uygulamalarından gelen hataları görüntülemeye çalışırken sorun yaşarlar. Bunun yerine, uygulamaları sessizce başarısız oluyor.

PHP web uygulamanızla ilgili sorun yaşıyorsanız ve tüm hata ve uyarıları görüntülemeniz gerekiyorsa doğru yerdesiniz. Bu eğitimde, PHP hatalarını ve uyarılarını etkinleştirmenin tüm farklı yollarını açıklayacağız. Ayrıca hataların bir günlük dosyasına nasıl yazılacağını ve hatta Retrace’in hata izleme özelliği aracılığıyla nasıl toplanacağını tartışacağız .İpucu: Stackify Retrace ile uygulama hatalarını ve performans sorunlarını anında bulunEntegre hatalar, günlükler ve kod düzeyinde performans öngörüleri ile sorun giderme ve kodunuzu optimize etmek kolaydır.Bugün ücretsiz deneyin

Tüm PHP Hatalarını Hızlıca Göster

Tüm php hatalarını ve uyarılarını görüntülemenin en hızlı yolu şu satırları PHP kod dosyanıza eklemektir:

ini_set ( 'display_errors' , 1 ); 
ini_set ( 'display_startup_errors' , 1 ); 
error_reporting ( E_ALL );  

Bu Kod Satırları Tam Olarak Ne Yapar?

ini_set işlevi, PHP ini dosyanızda bulunan yapılandırmayı geçersiz kılmaya çalışacaktır.

display_errors ve display_startup_errors, mevcut direktiflerden sadece ikisidir. display_errors yönergesi, hataların görüntülenip görüntülenmeyeceğini veya kullanıcıya gizleneceğini belirleyecektir. Genellikle dispay_errors yönergesi geliştirmeden sonra kapatılmalıdır.

Ancak display_startup_errors ayrı bir yönergedir çünkü display_errors PHP’nin başlatma sırası sırasında karşılaşılacak hataları işlemez. ini_set işlevi tarafından geçersiz kılınabilecek yönergelerin listesi resmi belgelerde bulunur .

Ne yazık ki, bu iki yönerge eksik noktalı virgül veya eksik kaşlı ayraç gibi ayrıştırma hatalarını gösteremez . Bu durumda PHP ini konfigürasyonu değiştirilmelidir.

PHP.ini’yi Tüm Hataları Gösterecek Şekilde Yapılandırın

PHP kodu ekleme hatalarından bazılarını test sırasında tarayıcıda göstermiyorsa, PHP ini yapılandırmasının bunu işlemek için bazı ek yönergeleri vardır.

display_errors = açık

PHP ini dosyasında display_errors yönergesi “on” olarak ayarlanmalıdır. Bu, PHP kodunda sadece ini_set işlevini çağırarak görüntülenemeyen sözdizimi veya ayrıştırma hataları dahil tüm hataları görüntüler. PHP ini dosyası, phpinfo() işlevinin görüntülenen çıktısında bulunabilir ve yüklenen yapılandırma dosyası olarak etiketlenir. Web uygulaması üretimdeyse, ini yapılandırmasındaki bu yönerge kapalı olarak ayarlanmalıdır.

PHP Hatalarını .htaccess Yapılandırması ile Görüntüle

Geliştiricilerin genellikle dizin dosyalarına erişimi vardır. PHP hatalarını gösterme yönergesi, projenin kök dizininde veya genel dizininde bulunan .htaccess dosyası kullanılarak da etkinleştirilebilir veya devre dışı bırakılabilir.

php_flag display_startup_errors açık
php_flag display_errors açık

PHP hatalarını göstermek için PHP koduna eklenecek olana benzer şekilde, .htaccess de display_startup_errors ve display_errors için yönergelere sahiptir. Hata mesajlarını bu şekilde göstermenin veya devre dışı bırakmanın avantajı, geliştirme ve üretimin, üretimin hataların görüntülenmesini engellediği farklı .htaccess dosyalarına sahip olabilmesidir.

Hangi dosyalara erişiminiz olduğuna ve dağıtımları ve sunucu yapılandırmalarını nasıl yaptığınıza bağlı olarak, display_errors’ı .htaccess veya PHP.ini dosyanızda yapılandırmak isteyebilirsiniz. Birçok barındırma sağlayıcısı, PHP.ini dosyanızı display_errors’ı etkinleştirecek şekilde değiştirmenize izin vermez.

.htaccess dosyasında, günlük klasörü veya günlük dosyası web sunucusu tarafından yazılabilir olduğu sürece özel bir hata günlüğü de etkinleştirilebilir. Günlük dosyası, .htaccess’in bulunduğu yere göreli bir yol olabilir veya /var/www/html/website/public/logs gibi mutlak bir yol olabilir.

php_value error_log günlükleri / all_errors . kayıt

Ayrıntılı Uyarıları ve Bildirimleri Etkinleştir

Bazen, başlangıçta uygulamayı etkilemiyor gibi görünen uyarılar, belirli koşullarda bazı ölümcül hatalara neden olabilir. Bu uyarıların düzeltilmesi gerekir çünkü bu, uygulamanın belirli senaryolarda normal şekilde çalışmayacağı anlamına gelir. Bu uyarıların çok fazla hataya neden olması durumunda, hataları gizlemek ve sadece uyarı mesajlarının ne olduğunu göstermek daha pratik olacaktır.

error_reporting ( E_WARNING );

Bir geliştirici için uyarıları göstermek ve hataları gizlemek, tek bir kod satırı eklemek kadar basittir. Uyarıları ve bildirimleri göstermek için hata raporlama fonksiyonu parametresi “E_WARNING | E_DUYURU”. error_reporting işlevi, E_ERROR, E_WARNING, E_PARSE ve E_NOTICE parametrelerini bitsel operatörler olarak kabul edebilir. Bildirimler dışındaki tüm hataları bildirmek için parametre “E_ALL & ~E_NOTICE” olur; burada E_ALL, error_reporting fonksiyonunun tüm olası parametrelerini temsil eder.

Derinlemesine error_reporting() işleviyle

Hata raporlama işlevi, geliştiricilerin uygulamada hangi ve kaç hatanın gösterileceğini kontrol etmelerini sağlayan yerleşik bir PHP işlevidir. PHP ini yapılandırmasının, çalışma zamanı sırasında bu işlev tarafından ayarlanacak bir error_reporting yönergesine sahip olduğunu unutmayın.

error_reporting ( 0 );

Tüm hataları, uyarıları, ayrıştırma mesajlarını ve bildirimleri kaldırmak için error_reporting işlevine iletilmesi gereken parametre sıfırdır. PHP dosyalarının her birinde bu kod satırına sahip olmak pratik olmaz. PHP ini dosyasındaki veya .htaccess içindeki rapor mesajlarını kapatmak daha iyi olur.

error_reporting ( E_NOTICE );

PHP, değişkenlerin bildirilmediğinde bile kullanılmasına izin verir. Bu standart bir uygulama değildir çünkü bildirilmemiş değişkenler döngülerde ve koşullarda kullanıldığında uygulamada sorunlara neden olacaktır. Bazen bu, bildirilen değişkenin koşullar veya döngüler için kullanılan değişkenden farklı bir yazımına sahip olması nedeniyle de olur. error_reporting işlevinde E_NOTICE geçirildiğinde, bu bildirilmemiş değişkenler web uygulamasında görüntülenecektir.

error_reporting ( E_ALL & ~ E_NOTICE ); 

Hata raporlama işlevi, hangi hataların gösterilebileceğini filtrelemenize olanak tanır. “~” karakteri “değil” veya “hayır” anlamına gelir, bu nedenle ~E_NOTICE parametresi bildirimleri göstermemek anlamına gelir. “&” ve “|” işaretlerine dikkat edin. olası parametreler arasındaki karakterler. “&” karakteri “herkes için doğrudur”, “|” karakteri ise “true for all” içindir. karakter, doğru olduğu sürece birini temsil eder. Bu iki karakter PHP koşullarında VEYA ve VE’de aynı anlama sahiptir.

error_reporting ( E_ALL ); 
error_reporting (- 1 ); 
ini_set ( 'hata_raporlama' , E_ALL );

Bu üç satır kod tamamen aynı şeyi yapıyor, tüm PHP hatalarını gösterecek. error_reporting(E_ALL), daha okunaklı ve anlaşılır olduğu için geliştiriciler arasında hata mesajlarını göstermek için en yaygın kullanılan yöntemdir.

PHP hatalarını error_log() işlevini kullanarak bir dosyaya kaydedin

Üretim sırasında hata mesajları son kullanıcılara gösterilmemelidir, ancak bu bilgilerin izleme amacıyla yine de kaydedilmesi gerekir. Bu hata mesajlarını bir üretim web uygulamasına kaydetmenin en iyi yolu, günlük dosyalarında saklamaktır.

Günlük dosyalarını kullanmanın kolay bir yolu, dört parametreyi kabul eden error_log işlevini kullanmaktır. Gerekli olan tek parametre, hata veya neyin günlüğe kaydedileceği ile ilgili ayrıntıları içeren ilk parametredir. Tür, hedef ve başlık bu işlev için isteğe bağlı parametrelerdir.

error_log ( "Bir sorun var!" , 0 ); 

type parametresi, tanımlanmadıysa, varsayılan olarak 0 olacaktır; bu, bu günlük bilgisinin web sunucusunda tanımlanan günlük dosyasına ekleneceği anlamına gelir.

error_log ( "Bu hatayı birisine e-posta ile gönder!" , 1 , " birisi@mydomain.com " );  

Tip 1 parametresi, üçüncü parametrede belirtilen bir hata günlüğünü e-posta ile gönderir. Bu özelliğin çalışması için PHP ini’nin e-posta gönderebilmesi için uygun bir SMTP yapılandırmasına sahip olması gerekir. Bu SMTP ini yönergeleri, ana bilgisayar, şifreleme türü, kullanıcı adı, parola ve bağlantı noktasını içerir. Bu tür bir hata raporlaması, bulunur bulunmaz düzeltilmesi gereken hataların günlüğe kaydedilmesi veya bildirilmesi için tavsiye edilir.

error_log ( "Bu hatayı bir dosyaya yazın!" , 3 , "logs/my-errors.log" );  

Mesajları web sunucusunun yapılandırması tarafından tanımlanan ayrı bir dosyaya kaydetmek için tip 3 kullanılmalıdır. Üçüncü parametre, günlük dosyasının konumu olarak hizmet edecek ve web sunucusu tarafından yazılabilir olmalıdır. Günlük dosyasının konumu, bu kodun çağrıldığı yere göreli bir yol veya mutlak bir yol olabilir.

Web Sunucusu Yapılandırması Aracılığıyla PHP Hatalarını Günlüğe Kaydet

.htaccess içindeki parametreleri değiştirmekten veya hataları göstermek için PHP koduna bazı satırlar eklemekten kaçınmak için, hataları günlüğe kaydetmenin en iyi yolu, onu web sunucusu yapılandırma dosyasında tanımlamaktır.

ErrorLog "/var/log/apache2/my-website-error.log" 

Apache için bu dosyalar, genellikle Ubuntu için siteler için kullanılabilir klasör veya Windows’ta httpd-vhosts dosyası içinde bulunan belirli web sitesinin veya uygulamanın sanal ana bilgisayarına eklenmelidir.

error_log / var / log / nginx / my - web - hata . günlük ;

Apache’ye benzer şekilde nginx için yönerge sadece error_log olarak adlandırılır. Hem Apache hem de nginx web sunucuları için günlük dosyaları web sunucusu tarafından yazılabilir olmalıdır. Neyse ki, kurulumdan sonra bu iki web sunucusunun günlük dosyalarının klasörleri zaten yazılabilir.

Retrace APM ile PHP Hatalarını Otomatik Olarak Toplayın

Retrace , Stackify tarafından sunulan bir APM (Uygulama Performans Yönetimi) aracıdır. Ancak araç, uygulamanızın performansını izlemenin ötesine geçer. Günlüğe kaydetmeyi merkezileştirmenize , kod profili oluşturmanıza ve sunucu ve uygulama ölçümlerinin zirvesinde kalmanıza olanak tanır .

Retrace’in harika özelliklerinden biri , PHP uygulamanızdaki tüm işlenmemiş hataları otomatik olarak toplama yeteneğidir . PHP uzantımız istisnayı yakalayacak ve bunları otomatik olarak Retrace’e iletecektir.

Retrace ile tüm hatalar otomatik olarak günlüğe kaydedilir ve kolayca görüntülenebilmesi için biçimlendirilir. Retrace sadece hangi hataların meydana geldiğini göstermekle kalmaz, aynı zamanda nerede ve neyin sebep olduğunu da analiz eder. Olayların zamanı ve sayısı da günlüklerde gösterilir, böylece hangi konuya öncelik verileceğine odaklanmak çok daha kolay olur.

Geri İzleme hakkında daha fazla bilgi edinmek için lütfen hata izlemeyle ilgili Geri İzleme özelliği sayfasına göz atın . Ayrıca, iş istasyonunuzda daha iyi kod yazmak için Stackify’ın ücretsiz kod profil oluşturucusu Prefix’i deneyin . Önek, .NET, Java, PHP, Node.js, Ruby ve Python ile çalışır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu

Reklam Engelleyici Algılandı

Lütfen siteye erişebilmek için reklam engelleyici kapatın.