PHP Hata Arama/Kontrol Listesi

2000 senesinde Michael M. Krznaric php temellerini anlattığı dokümanın sonunda bir liste vermiş, söylediğine göre mail listelerine gönderilen sorulardan derlemiş, doküman basit temel şeyleri anlatıyor fakat bu sondaki listeyi çevireyim istedim, hataların nerelerde olabileceğini, ne kadar iyi bilirseniz o kadar rahat edersiniz.

Şahsi bir giriş notu, eğer bulamıyorsanız, biraz dinlenin, sonra bir arkadaşınızı çağırın, kodu anlatın, anlatırken büyük ihtimal bulabileceksiniz…

Parantez içlerindekiler benim notlarım, belge 2000 senesinde yazılmış, artık çoğu şeyi editörler yapabiliyor.

  • (),[] and {} ayraçlarını kontrol edin.
  • “” içindeki “‘ları kontrol edin, “‘lar \ ile kaçılmazsa çalışmaz.
  • Fonksiyon adları gibi ayrılmış kelimeleri kontrol edin, myslq_num_rows() çalışmaz mysql_num_rows() çalışır. (Editörler yapabiliyor)
  • Yazdığınız kodun sözdizimini www.php.net/manual ya da lokal manual dokümanlarınızdan kontrol edin. (Editörler yapabiliyor)
  • Eğer fonksiyon içinde global değişkenler kullanırsanız global deyimini kullanın, (Global kullanımını hiç tavsiye etmem)
  • setCookie() fonksiyonu kullanıyorsanız, fonksiyonu çağırmadan önce herhangi bir output vermediğinizden emin olun.include/require edilen dosyalarda <? or <?php açılış etiketlerinden önce/sonra boşluk olmadığını kontrol edin.
  • Eğer SQL sorgunuz başarısız olursa, onu print edip, sözdizimini kontrol edin.
  • Eğer SQL sözdizimini doğru görünüyorsa, komut satırı, phpmyadmin veya herhangi bir db query aracı ile çalıştırın.
  • Eğer halen çalışmıyorsa, db kullanıcısının doğru yetkilere sahip olduğunu kontrol edin.
  • Eğer bir fonksiyonun yeniden tanımlanamamasi ile ilgili bir hata alıyorsanız, dosyanız 2 kez include ediliyordur. include_once() kullanmayı deneyin (Ç.N. include_once’ın performansı normal include’dan düşüktür, includelarınızı kontrol edip düzene sokmanız daha iyi olur).
  • PHP değişken isimlerinde büyüklük duyarlıdır, yani $Foo ile $FOO ayni değişken değildir (Ç.N:Fonksiyon isimleri tarihsel nedenlerle büyüklük duyarlı değildir).
  • Sınıf metod ve özelliklerine $this->$foo() ve $this->$variable şeklinde erişilmez. $this->foo() ve $this->variable şeklindedir. (bunu yazan eleman dinamik değişken kullanırsa çalışır)
  • İşin içinden çıkamıyorsanız, forumlarda, mail, irc listelerinde çözüm arayın. Soru sorarken olabildiğince fazla bilgi vermeye çalışın, yapmak istediğiniz şeyleri, o zamana kadar yaptıklarınızı, takıldığınız bölümleri ne kadar iyi anlatırsanız yanıt alma ihtimaliniz o kadar artar, bir de lütfen “Acil yardım, help me” türü mesajlar atmayın, pek hoş karşılanmaz, eğer işiniz o kadar acil ve önemli ise bu işi bilen birileri ile çalışın.