Yemek Tarifleri

İçerik Güvenliği Politikası

Siteniz İçerik Güvenliği İlkesi kullanıyorsa, şunları eklemeniz gerekir 'nonce-<value>' ve Tracy'nin düzgün çalışması için 'strict-dynamic' adresinden script-src adresine gidin. Bazı 3. eklentiler ek yönergeler gerektirebilir. Nonce, style-src yönergesinde desteklenmez, bu yönergeyi kullanırsanız 'unsafe-inline' eklemeniz gerekir, ancak üretim modunda bundan kaçınılmalıdır.

Nette Framework için yapılandırma örneği:

http:
	csp:
		script-src: [nonce, strict-dynamic]

Saf PHP'de örnek:

$nonce = base64_encode(random_bytes(20));
header("Content-Security-Policy: script-src 'nonce-$nonce' 'strict-dynamic';");

Daha Hızlı Yükleme

Temel entegrasyon basittir, ancak web sayfasında yavaş engelleyen komut dosyalarınız varsa, Tracy'nin yüklenmesini yavaşlatabilirler. Çözüm yerleştirmektir <?php Tracy\Debugger::renderLoader() ?> herhangi bir komut dosyasından önce şablonunuza yerleştirin:

<!DOCTYPE html>
<html>
<head>
	<title>...<title>
	<?php Tracy\Debugger::renderLoader() ?>
	<link rel="stylesheet" href="assets/style.css">
	<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>

AJAX ve Yönlendirilmiş İstekler

Tracy, AJAX istekleri ve yönlendirmeleri için Hata Ayıklama çubuğu ve Mavi Ekranlar görüntüleyebilir. Tracy kendi oturumlarını oluşturur, verileri kendi geçici dosyalarında saklar ve bir tracy-session çerezi kullanır.

Tracy, Tracy açılmadan önce başlatılan yerel bir PHP oturumu kullanacak şekilde de yapılandırılabilir:

session_start();
Debugger::setSessionStorage(new Tracy\NativeSession);
Debugger::enable();

Bir oturumun başlatılması daha karmaşık bir başlatma gerektiriyorsa, Tracy'yi hemen başlatabilir (böylece meydana gelen hataları ele alabilir) ve ardından oturum işleyicisini başlatabilir ve son olarak Tracy'ye dispatch() işlevini kullanarak oturumun kullanıma hazır olduğunu bildirebilirsiniz:

Debugger::setSessionStorage(new Tracy\NativeSession);
Debugger::enable();

// ardından oturum başlatma
// ve oturumu başlatın
session_start();

Debugger::dispatch();

setSessionStorage() işlevi 2.9 sürümünden beri mevcuttur, bundan önce Tracy her zaman yerel PHP oturumunu kullanmıştır.

Özel Yıkayıcı

Scrubber, parolalar veya kimlik bilgileri gibi hassas verilerin dökümlerden sızmasını önleyen bir filtredir. Filtre, dökülen dizi veya nesnenin her öğesi için çağrılır ve değer hassas ise true döndürür. Bu durumda, değer yerine ***** yazdırılır.

// anahtar değerlerinin ve `password` gibi özelliklerin dökülmesini önler,
// `password_repeat`, `check_password`, `DATABASE_PASSWORD`, vb.
$scrubber = function(string $key, $value, ?string $class): bool
{
	return preg_match('#password#i', $key) && $value !== null;
};

// BlueScreen içindeki tüm dökümler için kullanırız
Tracy\Debugger::getBlueScreen()->scrubber = $scrubber;

Özel Kaydedici

Hataları, yakalanmamış istisnaları günlüğe kaydetmek ve Tracy\Debugger::log() tarafından çağrılmak üzere özel bir logger oluşturabiliriz. Logger, Tracy\ILogger arayüzünü uygular.

use Tracy\ILogger;

class SlackLogger implements ILogger
{
	public function log($value, $priority = ILogger::INFO)
	{
		// Slack'e bir istek gönderir
	}
}

Ve sonra onu etkinleştiririz:

Tracy\Debugger::setLogger(new SlackLogger);

Eğer Nette Framework'ün tamamını kullanırsak, bunu NEON yapılandırma dosyasında ayarlayabiliriz:

services:
	tracy.logger: SlackLogger

Monolog Entegrasyonu

Tracy paketi, monolog/monolog entegrasyonuna izin veren bir PSR-3 adaptörü sağlar.

$monolog = new Monolog\Logger('main-channel');
$monolog->pushHandler(new Monolog\Handler\StreamHandler($logFilePath, Monolog\Logger::DEBUG));

$tracyLogger = new Tracy\Bridges\Psr\PsrToTracyLoggerAdapter($monolog);
Debugger::setLogger($tracyLogger);
Debugger::enable();

Debugger::log('info'); // yazıyor: [<TIMESTAMP>] main-channel.INFO: info [] []
Debugger::log('warning', Debugger::WARNING); // yazıyor: [<TIMESTAMP>] main-channel.WARNING: uyarı [] []

nginx

Eğer Tracy nginx üzerinde çalışmıyorsa, muhtemelen yanlış yapılandırılmıştır. Eğer şöyle bir şey varsa

try_files $uri $uri/ /index.php;

olarak değiştirin

try_files $uri $uri/ /index.php$is_args$args;