Migrace z 2.3 na 2.4 – Tracy neni videt
- DavidTheNewbie
- Člen | 79
Po premigrovani z 2.3 na 2.4 se mi prestal zobrazovat Debugbar od Tracy. Ve 2.3 pro jeji zobrazeni slouzil tento kod:
$configurator->setDebugMode(true);
$configurator->enableDebugger($rootDir . '/web/temp');
Tracy\Debugger::$strictMode = false;
Tracy\Debugger::$maxDepth = 2;
Tracy\Debugger::$maxLen = 200;
Tracy\Debugger::getBar()->addPanel(new Panel\DbPanel());
Po migraci na 2.4 vsak Tracy zmizela. Zkousel jsem jeste pridat Tracy\Debugger::enable(), ale bez uspechu :-(
Editoval DavidTheNewbie (5. 4. 2017 10:11)
- Eda
- Backer | 220
V Nette 2.4 je Tracy načítána samostatným requestem. Zkus se tedy podívat do developer konzole na request, který Tracy načítá. Možná z nějakého důvodu padá a háže 500, když si to otevřeš v novém panelu, vše bys měl vidět.
Taky jsem se s tím setkal. U jedné aplikace, která vyžadovala mít v URL určitý GET parametr, který v tom Tracy requestu pak samozřejmě chyběl…
- DavidTheNewbie
- Člen | 79
Eda napsal(a):
V Nette 2.4 je Tracy načítána samostatným requestem. Zkus se tedy podívat do developer konzole na request, který Tracy načítá. Možná z nějakého důvodu padá a háže 500, když si to otevřeš v novém panelu, vše bys měl vidět.
Taky jsem se s tím setkal. U jedné aplikace, která vyžadovala mít v URL určitý GET parametr, který v tom Tracy requestu pak samozřejmě chyběl…
V konzoli vidim uspesny request 200 na Tracy bar. Po prokliku na request se mi korektne zobrazi stranka s vyctem javaScriptu, ktery by mel, predpokladam, inicializovat Tracy. Do stranky aplikace se nacte kod viz nize.
<head>
<style class="tracy-debug"> ..styles.. </style>
</head>
<body>
<!-- Tracy Debug Bar -->
<div id="tracy-debug" data-id="d8866a7edb" data-nonce=""></div>
<script src="?_tracy_bar=content.d8866a7edb&XDEBUG_SESSION_STOP=1"></script>
</body>
Predpokladam, ze box id=„tracy-debug“ by mel obsahovat strukturu Tracy, je vsak prazdny :-(
Editoval DavidTheNewbie (4. 4. 2017 6:45)
- DavidTheNewbie
- Člen | 79
Eda napsal(a):
JS chyby v konzoli žádné?
Chybu bych v konzoli uvital, abych mohl pripadne zasahnout. Je vsak cista. Nemusi se nahodou krom povoleni debuggeru nastavovat jeste typ prostredi?
Editoval DavidTheNewbie (4. 4. 2017 20:11)
- PetrHH
- Člen | 49
DavidTheNewbie napsal(a):
Eda napsal(a):
JS chyby v konzoli žádné?
Chybu bych v konzoli uvital, abych mohl pripadne zasahnout. Je vsak cista. Nemusi se nahodou krom povoleni debuggeru nastavovat jeste typ prostredi?
Ještě bych zkusil vyhodit to načítání DB panelu a pak jedině mrknout do logu webserveru, třeba tam bude něco zajímavého.
- DavidTheNewbie
- Člen | 79
PetrHH napsal(a):
DavidTheNewbie napsal(a):
Eda napsal(a):
JS chyby v konzoli žádné?
Chybu bych v konzoli uvital, abych mohl pripadne zasahnout. Je vsak cista. Nemusi se nahodou krom povoleni debuggeru nastavovat jeste typ prostredi?
Ještě bych zkusil vyhodit to načítání DB panelu a pak jedině mrknout do logu webserveru, třeba tam bude něco zajímavého.
Nastaveni Debuggeru jsem stahl na toto minimum:
$configurator->setDebugMode(true);
$configurator->enableTracy($rootDir . '/web/temp');
Debugger::$strictMode = false;
Debugger::$maxDepth = 2;
Debugger::$maxLen = 200;
V HTTPD access logu vse vypada vporadku:
[04/Apr/2017:21:13:58 +0200]
"GET /?_tracy_bar=content.68c61b3784&XDEBUG_SESSION_STOP=1
HTTP/1.1" 200 36399 "https://myapp.local:8081/"
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36"
myapp.local:8081 "-" "-"
Tracy ale stale nikde :-(
Editoval DavidTheNewbie (4. 4. 2017 22:42)
- DavidTheNewbie
- Člen | 79
Ot@s napsal(a):
Do bootstrapu přidej:
\Tracy\Debugger::$productionMode = false;
Tuto promennou jsem nastavenou nemel. Diky. Kazdopadne jeji doplneni (+ promazani cache) neprobudilo Tracy k zivotu :-(
- Ot@s
- Backer | 476
DavidTheNewbie napsal(a):
Ot@s napsal(a):
Do bootstrapu přidej:
\Tracy\Debugger::$productionMode = false;
Tuto promennou jsem nastavenou nemel. Diky. Kazdopadne jeji doplneni (+ promazani cache) neprobudilo Tracy k zivotu :-(
Před časem jsem řešil stejný problém jako Ty. Následující nastavení mi zprovoznílo obojí (laděnku i debugbar):
$configurator = new Nette\Configurator;
$configurator->enableTracy('../log'); // doplň si správnou hodnotu
$configurator->setDebugMode(true);
\Tracy\Debugger::$strictMode = true;
\Tracy\Debugger::$productionMode = false;
Editoval Ot@s (5. 4. 2017 9:35)
- DavidTheNewbie
- Člen | 79
Hug0 napsal(a):
Zkoušel jsi Requirements checker?
Requirements checker hlasi vse v zelenem, tj. prostredi OK.
- DavidTheNewbie
- Člen | 79
Ot@s napsal(a):
DavidTheNewbie napsal(a):
Ot@s napsal(a):
Do bootstrapu přidej:
\Tracy\Debugger::$productionMode = false;
Tuto promennou jsem nastavenou nemel. Diky. Kazdopadne jeji doplneni (+ promazani cache) neprobudilo Tracy k zivotu :-(
Před časem jsem řešil stejný problém jako Ty. Následující nastavení mi zprovoznílo obojí (laděnku i debugbar):
$configurator = new Nette\Configurator; $configurator->enableTracy('../log'); // doplň si správnou hodnotu $configurator->setDebugMode(true); \Tracy\Debugger::$strictMode = true; \Tracy\Debugger::$productionMode = false;
Nastavil jsem presne krom strictMode, ktery musim dat na false, jelikoz se refaktoruje starsi kod a true mod by si vyzadal spoustu oprav, nez by appka vubec korektne nahrala a prezentovala obsah.
S nastavenim:
use Tracy\Debugger;
use Nette\Configurator;
$configurator = new Configurator;
$configurator->enableTracy('cesta_k_memu_logu');
$configurator->setDebugMode(true);
Debugger::$strictMode = false; // viz co uvadim vyse
Debugger::$productionMode = false;
Bez nahlaseni jakekoliv chyby vsak Debugbar chybi.
Editoval DavidTheNewbie (5. 4. 2017 10:10)
- Hug0
- Člen | 35
DavidTheNewbie napsal(a):
Hug0 napsal(a):
Zkoušel jsi Requirements checker?
Requirements checker hlasi vse v zelenem, tj. prostredi OK.
A nemůže ti ten javascript blokovat nějaký doplněk prohlížeče? Můžeš to zkusit v jiném prohlížeči?
- DavidTheNewbie
- Člen | 79
Hug0 napsal(a):
DavidTheNewbie napsal(a):
Hug0 napsal(a):
Zkoušel jsi Requirements checker?
Requirements checker hlasi vse v zelenem, tj. prostredi OK.
A nemůže ti ten javascript blokovat nějaký doplněk prohlížeče? Můžeš to zkusit v jiném prohlížeči?
V jinem prohlizeci je stejna situace, tj. po Debugbaru k Tracy zadna stopa. V ramci testu jsem dokonce zasel tak daleko, ze jsem si nechal naprosto prazdny dokument, tj. prazdny HEAD tag a prazdny BODY tag. Nicmene i na takto ciste strance se pri konfiguraci:
use Tracy\Debugger;
use Nette\Configurator;
$configurator = new Configurator;
$configurator->enableTracy('cesta_k_memu_logu');
$configurator->setDebugMode(true);
Debugger::$strictMode = false;
Debugger::$productionMode = false;
..neni Debugbar videt, byt je v konzoli uspesny dotaz na tracy:
https://myapp.local:8081/?_tracy_bar=content.d7012b3c97&XDEBUG_SESSION_STOP=1
Tracy jako takova asi funguje ok, jelikoz kdyz nastane chyba, tato se v duchu a grafice Tracy generuje, Debugbar vsak nikde neni videt :-(
Editoval DavidTheNewbie (5. 4. 2017 21:17)
- DavidTheNewbie
- Člen | 79
Nasel jsem zdroj nezobrazovani Debugbaru k Tracy. Je to proto, ze soubor loader.phtml v composeru Tracy ma prirazenu hodnotu k promenne $contentId viz:
<?php
namespace Tracy;
use Tracy;
$nonceAttr = $nonce ? ' nonce="' . Helpers::escapeHtml($nonce) . '"' : '';
?>
<!-- Tracy Debug Bar -->
<div id="tracy-debug" data-id="<?= Helpers::escapeHtml($contentId) ?>" data-nonce="<?= $nonce ?>"></div>
<?php if ($contentId /*TENTO BLOK SE VYKONA, ALE NEZOBRAZUJE MI DEBUGBAR :-(*/): ?>
<script src="?_tracy_bar=<?= urlencode("content.$contentId") ?>&XDEBUG_SESSION_STOP=1"<?= $nonceAttr ?>></script>
<?php else: /*KDYBY VYKONAL TENTO BLOK, DEBUGBAR SE ZOBRAZI*/ ?>
<script src="?_tracy_bar=js&v=<?= urlencode(Debugger::VERSION) ?>&XDEBUG_SESSION_STOP=1"<?= $nonceAttr ?>></script>
<script<?= $nonceAttr ?>>
Tracy.Debug.init(<?= json_encode($content) ?>, <?= json_encode($dumps) ?>);
</script>
<?php endif ?>
.. Kdyz je $contentId bez hodnoty, tj. ve stavu false, vygeneruje se script v else blocku a Debugbar se zobrazi.
Promenna $contentId nabyde hodnoty v souboru Bar.php, protoze $useSession nabyde hodnoty true viz:
public function render()
...
// !!! ZDE NABYDE $useSession HODNOTY TRUE, COZ NAPLNI $contentId VIZ NIZE
$useSession = $this->useSession && session_status() === PHP_SESSION_ACTIVE;
...
} else {
$rows[] = (object) ['type' => 'main', 'panels' => $this->renderPanels()];
$dumps = Dumper::fetchLiveData();
foreach (array_reverse((array) $redirectQueue) as $info) {
$rows[] = (object) ['type' => 'redirect', 'panels' => $info['panels']];
$dumps += $info['dumps'];
}
$redirectQueue = NULL;
// !!! ZDE SE PRIRADI HODNOTA KE $contentId
$contentId = $useSession ? substr(md5(uniqid('', TRUE)), 0, 10) : NULL;
}
… Netusite nekdo, jak dostat $useSession na false, jelikoz tato moznost mi jako jedina konecne zobrazy Debugbar k Travy?
Editoval DavidTheNewbie (6. 4. 2017 23:04)