Návody
Content Security Policy
Pokud váš web používá Content Security Policy, budete muset přidat stejné 'nonce-<value>'
a
'strict-dynamic'
do script-src
, aby Tracy správně fungovala. Některé doplňky třetích stran mohou
vyžadovat další nastavení. Nonce není podporována v direktivě style-src
, pokud tuto direktivu používáte,
musíte přidat 'unsafe-inline
`, ale v produkčním režimu byste se tomu měli vyhnout.
Příklad konfigurace pro Nette Framework:
http:
csp:
script-src: [nonce, strict-dynamic]
Příklad v čistém PHP:
$nonce = base64_encode(random_bytes(20));
header("Content-Security-Policy: script-src 'nonce-$nonce' 'strict-dynamic';");
Rychlejší načítání
Spuštění je přímočaré, pokud však máte na webové stránce pomalu načítající se blokující skripty, mohou
zpomalit načítání Tracy. Řešením je umístit <?php Tracy\Debugger::renderLoader() ?>
do vaší šablony
před všechny skripty:
<!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 a přesměrování
Tracy umí zobrazit Debug bar a Bluescreeny pro AJAXové požadavky a přesměrovaní. Tracy si vytváří vlastní session,
data uchovává ve vlastních dočasných souborech a používá cookie tracy-session
.
Tracy lze nakonfigurovat také tak, aby používala nativní PHP session, kterou nastartujeme ještě před zapnutím Tracy:
session_start();
Debugger::setSessionStorage(new Tracy\NativeSession);
Debugger::enable();
V případě, že nastartování session vyžaduje složitější inicializaci, můžete Tracy spustit ihned (aby mohla
zpracovat případné vzniklé chyby) a poté inicializovat obsluhu relace a nakonec informovat Tracy, že relace je připravena
k použití pomocí funkce dispatch()
:
Debugger::setSessionStorage(new Tracy\NativeSession);
Debugger::enable();
// následuje inicializace session
// a spuštění session
session_start();
Debugger::dispatch();
Funkce setSessionStorage()
existuje od verze 2.9, předtím používala Tracy nativní PHP session vždy.
Vlastní logger
Můžeme si vytvořit vlastní logger, který bude logovat chyby, nezachycené výjimky a také bude vyvolán metodou
Tracy\Debugger::log()
. Logger implementuje rozhraní Tracy\ILogger.
use Tracy\ILogger;
class SlackLogger implements ILogger
{
public function log($value, $priority = ILogger::INFO)
{
// pošle request na Slack
}
}
A následně jej aktivujeme:
Tracy\Debugger::setLogger(new SlackLogger);
Pokud používáme plný Nette Framework, můžete jej nastavit v konfiguračním NEON souboru:
services:
tracy.logger: SlackLogger
nginx
Pokud vám nefunguje Tracy na serveru nginx, nespíš je špatně nakonfigurovaný. Pokud je v konfiguraci něco jako:
try_files $uri $uri/ /index.php;
změňte to na:
try_files $uri $uri/ /index.php$is_args$args;