Tracy ile Başlarken
Tracy kütüphanesi günlük PHP programcıları için yararlı bir yardımcıdır. Size yardımcı olur:
- hataları hızla tespit edin ve düzeltin
- günlük hataları
- değişkenlerin dökümü
- komut dosyalarının/sorguların yürütme süresini ölçme
- bellek tüketimine bakın
PHP, programcılara büyük esneklik sağladığı için zor tespit edilebilen hatalar yapmak için mükemmel bir dildir. Tracy\Debugger bu nedenle daha değerlidir. Teşhis araçları arasında nihai bir araçtır.
Eğer Tracy ile ilk kez tanışıyorsanız, inanın bana, hayatınız Tracy'den önceki ve onunla olan olarak ikiye ayrılmaya başlar. İyi kısma hoş geldiniz!
Kurulum ve Gereksinimler
Tracy'yi kurmanın en iyi yolu en son paketi indirmektir veya Composer'ı kullanmaktır:
composer require tracy/tracy
Alternatif olarak, tüm paketi veya tracy.phar dosyasını indirebilirsiniz.
Kullanım
Tracy, `Tracy\Debugger::enable()' yönteminin programın başında, herhangi bir çıktı gönderilmeden önce mümkün olan en kısa sürede çağrılmasıyla etkinleştirilir:
use Tracy\Debugger;
require 'vendor/autoload.php'; // alternatif olarak tracy.phar
Debugger::enable();
Sayfada ilk fark edeceğiniz şey sağ alt köşedeki Tracy Çubuğudur. Eğer bunu göremiyorsanız, bu Tracy'nin üretim
modunda çalıştığı anlamına gelebilir. Bunun nedeni Tracy'nin güvenlik nedeniyle yalnızca localhost'ta görünür
olmasıdır. Çalışıp çalışmadığını test etmek için Debugger::enable(Debugger::Development)
parametresini
kullanarak geçici olarak geliştirme moduna geçirebilirsiniz.
Tracy Bar
Tracy Çubuğu yüzen bir paneldir. Bir sayfanın sağ alt köşesinde görüntülenir. Fareyi kullanarak hareket ettirebilirsiniz. Sayfa yeniden yüklendikten sonra konumunu hatırlayacaktır.
Tracy Bar'a başka kullanışlı paneller ekleyebilirsiniz. İlginç olanları eklentilerde bulabilir veya kendiniz oluşturabilirsiniz.
Tracy Bar'ı göstermek istemiyorsanız, ayarlayın:
Debugger::$showBar = false;
Hata ve İstisnaların Görselleştirilmesi
PHP'nin hataları nasıl raporladığını biliyorsunuzdur: sayfanın kaynak kodunda buna benzer bir şey vardır:
Parse error: syntax error, unexpected '}' in HomePresenter.php on line 15
veya yakalanmamış istisna:
Fatal error: Uncaught Nette\MemberAccessException: Call to undefined method Nette\Application\UI\Form::addTest()? in /sandbox/vendor/nette/utils/src/Utils/ObjectMixin.php:100 Stack trace: #0 /sandbox/vendor/nette/utils/src/Utils/Object.php(75): Nette\Utils\ObjectMixin::call(Object(Nette\Application\UI\Form), 'addTest', Array) #1 /sandbox/app/Forms/SignFormFactory.php(32): Nette\Object->__call('addTest', Array) #2 /sandbox/app/UI/Sign/SignPresenter.php(21): App\Forms\SignFormFactory->create() #3 /sandbox/vendor/nette/component-model/src/ComponentModel/Container.php(181): App\UI\Sign\SignPresenter->createComponentSignInForm('signInForm') #4 /sandbox/vendor/nette/component-model/src/ComponentModel/Container.php(139): Nette\ComponentModel\Container->createComponent('signInForm') #5 /sandbox/temp/cache/latte/15206b353f351f6bfca2c36cc.php(17): Nette\ComponentModel\Co in /sandbox/vendor/nette/utils/src/Utils/ObjectMixin.php on line 100
Bu çıktıda gezinmek o kadar kolay değildir. Tracy'yi etkinleştirirseniz, hem hatalar hem de istisnalar tamamen farklı bir biçimde görüntülenir:
Hata mesajı tam anlamıyla çığlık atıyor. Kaynak kodun bir bölümünü, hatanın oluştuğu vurgulanmış satırla birlikte görebilirsiniz. Bir mesaj hatayı net bir şekilde açıklıyor. Sitenin tamamı etkileşimlidir, deneyin.
Ve ne var biliyor musunuz? Ölümcül hatalar da aynı şekilde yakalanır ve görüntülenir. Herhangi bir uzantı yüklemenize gerek yok (canlı örnek için tıklayın):
Bir değişken adındaki yazım hatası veya var olmayan bir dosyanın açılmaya çalışılması gibi hatalar E_NOTICE veya E_WARNING düzeyinde raporlar oluşturur. Bunlar kolayca gözden kaçabilir ve/veya bir web sayfası grafik düzeninde tamamen gizlenebilir. Tracy'nin bunları yönetmesine izin verin:
Ya da hatalar gibi görüntülenebilirler:
Debugger::$strictMode = true; // tüm hataları görüntüle
Debugger::$strictMode = E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED; // deprecated bildirimleri hariç tüm hatalar
Not: Tracy etkinleştirildiğinde hata raporlama seviyesini E_ALL olarak değiştirir. Bunu değiştirmek istiyorsanız,
enable()
adresini çağırdıktan sonra bunu yapın.
Geliştirme ve Üretim Modu
Gördüğünüz gibi, Tracy oldukça konuşkan, bu da geliştirme ortamında takdir edilebilirken, üretim sunucusunda bir felakete neden olacaktır. Bunun nedeni, orada hiçbir hata ayıklama bilgisinin görüntülenmemesi gerektiğidir. Bu nedenle Tracy ortam otomatik algılama özelliğine sahiptir ve örnek canlı bir sunucuda çalıştırılırsa, hata görüntülenmek yerine günlüğe kaydedilir ve ziyaretçi yalnızca kullanıcı dostu bir mesaj görür:
Üretim kipi, dump() kullanılarak gönderilen tüm hata ayıklama bilgilerinin
ve elbette PHP tarafından üretilen tüm hata iletilerinin görüntülenmesini engeller. Yani kodda bazı dump($obj)
adreslerini unuttuysanız, endişelenmenize gerek yok, üretim sunucusunda hiçbir şey görüntülenmeyecektir.
Mod otomatik algılama nasıl çalışır? Uygulama localhost üzerinde çalışıyorsa (yani, IP adresi 127.0.0.1
veya ::1
) ve proxy yoksa (yani, HTTP başlığı) mod geliştirmedir. Aksi takdirde, üretim modunda çalışır.
Geliştirme modunu diğer durumlarda, örneğin belirli bir IP adresinden erişen geliştiriciler için etkinleştirmek
istiyorsanız, bunu enable()
yönteminin bir parametresi olarak belirtebilirsiniz:
Debugger::enable('23.75.345.200'); // bir dizi IP adresi de sağlayabilirsiniz
IP adresini bir çerez ile birleştirmenizi kesinlikle öneririz. tracy-debug
çerezinde secret1234
gibi gizli bir belirteç saklayın ve bu şekilde, geliştirme modunu yalnızca çerezde belirtilen belirtece sahip olan belirli
bir IP adresinden erişen geliştiriciler için etkinleştirin:
Debugger::enable('secret1234@23.75.345.200');
Ayrıca enable()
yönteminin bir parametresi olarak Debugger::Development
veya
Debugger::Production
sabitlerini kullanarak geliştirme/üretim modunu doğrudan ayarlayabilirsiniz.
Nette Framework kullanıyorsanız, bunun için modu nasıl ayarlayacağınıza bir göz atın ve daha sonra Tracy için de kullanılacaktır.
Hata Günlüğü
Üretim modunda, Tracy tüm hataları ve istisnaları otomatik olarak bir metin günlüğüne kaydeder. Günlüğe kaydetme
işleminin gerçekleşmesi için, günlük dizininin mutlak yolunu $logDirectory
değişkenine ayarlamanız veya
enable()
yöntemine ikinci parametre olarak aktarmanız gerekir:
Debugger::$logDirectory = __DIR__ . '/log';
Hata kaydı son derece kullanışlıdır. Uygulamanızın tüm kullanıcılarının aslında ücretsiz olarak hata bulma konusunda birinci sınıf iş yapan beta testçileri olduğunu ve onların değerli raporlarını fark etmeden çöp kutusuna atmanızın aptallık olacağını düşünün.
Kendi mesajlarınızı veya yakalanan istisnaları günlüğe kaydetmeniz gerekiyorsa, log()
yöntemini
kullanın:
Debugger::log('Beklenmeyen hata'); // metin mesajı
try {
criticalOperation();
} catch (Exception $e) {
Debugger::log($e); // günlük istisnası
// veya
Debugger::log($e, Debugger::ERROR); // ayrıca bir e-posta bildirimi gönderir
}
If you want Tracy to log PHP errors like E_NOTICE
or E_WARNING
with detailed information (HTML
report), set Debugger::$logSeverity
:
Debugger::$logSeverity = E_NOTICE | E_WARNING;
Gerçek bir profesyonel için hata günlüğü çok önemli bir bilgi kaynağıdır ve herhangi bir yeni hatadan hemen haberdar olmak ister. Tracy ona yardımcı olur. Her yeni hata kaydı için bir e-posta gönderebilir. Bu e-postaların nereye gönderileceği $email değişkeni ile belirlenir:
Debugger::$email = 'admin@example.com';
Nette Framework'ün tamamını kullanıyorsanız, bunu ve diğerlerini yapılandırma dosyasında ayarlayabilirsiniz.
E-posta kutunuzu selden korumak için Tracy sadece bir mesaj gönderir ve bir dosya oluşturur email-sent
.
Bir geliştirici e-posta bildirimini aldığında, günlüğü kontrol eder, uygulamasını düzeltir ve email-sent
izleme dosyasını siler. Bu, e-posta gönderimini tekrar etkinleştirir.
Dosyaları Düzenleyicide Açma
Hata sayfası görüntülendiğinde, dosya adlarına tıklayabilirsiniz ve imleç ilgili satırda olacak şekilde
editörünüzde açılırlar. Dosyalar da oluşturulabilir (eylem create file
) veya içlerindeki hatalar
düzeltilebilir (eylem fix it
). Bunu yapmak için tarayıcıyı ve sistemi yapılandırmanız gerekir.
Desteklenen PHP Sürümleri
Tracy | PHP ile uyumlu |
---|---|
Tracy 2.10 – 3.0 | PHP 8.0 – 8.4 |
Tracy 2.9 | PHP 7.2 – 8.2 |
Tracy 2.8 | PHP 7.2 – 8.1 |
Tracy 2.6 – 2.7 | PHP 7.1 – 8.0 |
Tracy 2.5 | PHP 5.4 – 7.4 |
Tracy 2.4 | PHP 5.4 – 7.2 |
En son yama sürümleri için geçerlidir.
Limanlar
Bu, diğer çerçevelere ve CMS'ye resmi olmayan bağlantı noktalarının bir listesidir:
- Drupal 7
- Laravel framework: recca0120/laravel-tracy, whipsterCZ/laravel-tracy
- OpenCart
- ProcessWire CMS/CMF
- Slim Framework
- Symfony framework: kutny/tracy-bundle, VasekPurchart/Tracy-Blue-Screen-Bundle
- Wordpress