IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   PHP (https://www.ircforumlari.net/php/)
-   -   PHP hata mesajı okuyabilmek (https://www.ircforumlari.net/php/601017-php-hata-mesaji-okuyabilmek.html)

Swat 15 Temmuz 2014 11:10

PHP hata mesajı okuyabilmek
 
PHP programlama dili de, diğer bir çok programlama dilinde olduğu gibi, herhangi bir hata durumunda kullanıcıyı elinden geldiğince bilgilendirir. Elinden geldiğince diyorum çünkü bir tek hatayı çözmediği kalır geriye, daha ne yapsın? Hatanın bulunduğu satırdan tutun da, tam olarak ne hatası olduğu, neyi unuttuğunuz ya da neyi fazla koyduğunuzu gibi temel parametreleri size hata mesajı halinde gösterir. Peki bizler, php web programcıları olarak bu hata mesajlarını ne kadar okuyabiliyoruz?
Aslında php geliştiricilerinin çok büyük bir sorunudur hata mesajı okumak. Hemen hemen her platformda geliştiricilerin karşılaştıkları hatalar ile ilgili mesajlarını görürsünüz. Hata mesajını yazarlar ve sorarlar, nerede hata yaptım diye… Oysa ki yapmaları gereken sadece php motoru tarafından kendilerine söylenen hata mesajını okumaktır. Okudukları zaman elleriyle koydukları gibi bulurlar hatanın sebebini.. Dilerseniz en çok karşılaşılan hatalara örnekler ile değinelim biraz.
Hata mesajı örnekleri

PHP- Kodu:

<?php
 
echo 'Merhaba Dünya'
 
?>

Yukarıdaki kodları gördüğünüz an hemen söylemişsinizdir aslında satır sonunda noktalı virgül unutulduğunu. Ama bunu göremeyip, üstelik kodlara ya da hata mesajına bakmadan çeşitli platformlarda sorular soran arkadaşlar var. Bir de bunun hata mesajını yazalım isterseniz:

Kod:

Parse error: syntax error, unexpected end of file, expecting ‘,’ or ‘;’ in C:wamp
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
on line 5

Gördüğünüz gibi, mesaj çok açık. İngilizce bilmeseniz bile, google translate kullanarak, bunun bir ayrıştırma hatası olduğunu söylebiliriz. Ancak hata mesajını okurken de dikkat etmek gerek. Öyle ki, mesajda 5. satır olduğu yazıyor ama aslında demek istediği hatanın 5. satırda olduğu değil. 5. satırdaki işlemi yapamadığını, çünkü öncesinde bir söz dizimi hatası olduğunu söylüyor php bize… Ve hatta olası eksiklerin virgül ya da noktalı virgül olabileceğini de söylemeden edemiyor.
Yukarıdaki örnek bile yeterli aslında hata mesajının nasıl okunması gerektiğini göstermeye ama bir örnek daha verelim isterseniz.,

PHP- Kodu:

<?php
 
echo 'Fatih'in iki farklı adı var.';
 
?>

Yukarıda ki kodlardan alacağınız hata mesajı da aşağıdadır:

Kod:

Parse error: syntax error, unexpected ‘in’ (T_STRING), expecting ‘,’ or ‘;’ in C:wamp
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
on line 3

Hemen hemen bir önceki ile aynı hata mesajı. Fakat burada nokta atışı yapmış ve hatanın satır üçte olduğunu söylemiş. Aslında biraz incelediğinizde hiç bir fark olmadığını görürsünüz. Mesajda bize, ‘in’ diye birşey olamayacağını, bunun bir hata olduğunu söylüyor. Çünkü Fatih kelimesinden sonra tek tırnak var ve bizim sevgili php motorumuz tek tırnaktan sonra nokta, virgül ya da noktalı virgül arıyor. Göremeyince de soruyor, in yerine virgül ya da noktalı virgül mi koymak istedin acaba diye..
Biraz da insanı çıldırtan “Notice” damgalı hata mesajlarına bakalım. Aslında bunlar hata mesajı değil, bildirimdir. Ve genelde geliştirme aşamasında php geliştiricisini uyarmak için gösterilir. Tabi siz son kullanıcıya sistemi sunduğunuzda hata mesajı göstermeyi kapatmıyorsanız o zaman başka :) Bir tane notice damgalı hata mesajını örnekleyelim:

PHP- Kodu:

<?php
 
echo $_GET['dizi'];
 
?>

Kodlara baktığınızda hiç bir problem yok gibi duruyor değil mi? Ancak kocaman bir notice damgalı hata mesajı sizi bekliyor olacak çalıştırdığınızda:

Kod:

Notice: Undefined index: dizi in C:wamp
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
on line 3

Gördüğünüz gibi, tanımsız index ‘dizi’ şeklinde bir uyarı mesajı aldık. Neden böyle bir mesaj aldığımızı yorumlayalım hemen. Çünkü adres çubuğundan gelmesini beklediğimiz parametreyi ekrana yazdırmak istiyoruz ve $_GET global dizisi içinde adres çubuğundan herhangi bir parametre gönderilmediği eleman olmaz. Hata mesajımızda da bize bunu söylüyor aslında, ‘dizi isminde bir indeks tanımlanmamış’ diyor. Fakat hata.php?dizi=fatih dersek ekrana hatasız bir şekilde fatih yazdığını görüyoruz. Öyleyse bu hatadan kurtulmak için ne yapmamız gerekiyor? Doğru kod şudur arkadaşlar:

PHP- Kodu:

<?php
 
echo isset($_GET['dizi']) ? $_GET['dizi'] : '';
 
?>

Yukarıdaki kod ile, eğer dizi indeksi tanımlıysa ekrana yazdır, değilse yazdırma dedik. Kodu çalıştırdığımızda da göreceğimiz üzere ilk etapta ekrana hiç bir çıktı vermeyecektir. Ancak hata.php?dizi=fatih dediğimizde fatih değerini ekranda görebiliriz. Yukarıdaki kod size yabancı geldiyse hemen aşağıdaki kodun ikiz kardeşi olduğunu söyleyelim:

PHP- Kodu:

<?php
 
if(isset($_GET['dizi'])){
    echo 
$_GET['dizi'];
}else{
    echo 
'';
}
 
?>

Fazlaca hata mesajı ve bu mesajların ne işe yaradığı ile ilgili yazılabilecek sayfalarca cümle vardır ancak biz burada keselim. Çünkü mürekkep biter, yazacaklar bitmez.
Sonuç olarak;
Hata mesajlarının sonundaki satır sayısını değil, lütfen hata mesajlarını okuyalım. Çünkü çözüm her zaman hata mesajında gizlidir. Tam tersi bir durum size sadece vakit kaybettirir. 6 dakikada yazdığınız kodun bir hatası için 6 saat ve belki daha fazla zaman harcamak istemiyorsanız, 6 saniye daha verin ve mesajı dikkatlice okuyun.


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 19:45.

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net