Empty-web projekt, kde nastavit Debug mode Debugger::Development

MilanL
Člen | 7
+
0
-

Ahoj, mám tento problém s Tracy v návodech je spousta nastavení, ale není napsáno kde to nastavit, píše se jen obecně „co nejdříve“, když to dám řádku Debugger::enable(Debugger::Development) zkoušeno i s IP adresou do:

index.php hodí chybu Apache, error.log: Class „APP\Debugger“ not found – zde mě napadá, jestli bych neměl nejdříve vytvořit Debugger objekt.

HomePresenteru hodí chybu aplikace syntax error, unexpected identifier „Debugger“, expecting „function“ or „const“

Potřebuji to takto nastavit, z důvodu běhu na Linux Server edici pouze console režim.

nightfish
Člen | 474
+
+1
-

@MilanL Ve standardním nette/web-project je to tak, že index.php volá Bootstrapper::boot(), ve kterém se nastavuje více věcí, včetně Tracy. Viz https://github.com/…ootstrap.php#L17

Jinak k chybě Class „APP\Debugger“ not found – zde mě napadá, jestli bych neměl nejdříve vytvořit Debugger objekt.:

  1. Vidíš, že se hledá APP\Debugger, ty chceš \Tracy\Debugger.
  2. Třída Tracy\Debugger nemusí být ještě načtená – takže inicializaci Tracy chceš dělat až po nastavení autoloaderu (která se obvykle děje na řádku typu require __DIR__ . '/vendor/autoload.php').
MilanL
Člen | 7
+
0
-

@nightfish to dle githubu v bootstrap.php jsem též zkoušel a nefungovalo to.

v indexu jsem to měl takto nevím jestli to nemělo být až někde mezi těmi původními řádky, za configuratorem nebo containerem

<?php

declare(strict_types=1);

// use Tracy\Debugger;

require __DIR__ . '/../vendor/autoload.php';

// Debugger::enable(Debugger::Development);

$configurator = App\Bootstrap::boot();
$container = $configurator->createContainer();
$application = $container->getByType(Nette\Application\Application::class);
$application->run();

Editoval MilanL (11. 8. 2023 13:48)

Marek Bartoš
Nette Blogger | 1177
+
0
-

Co znamená nefungovalo? Jestliže se snažíš v indexu povolit debugger a následně voláš bootstrap, tak v bootstrapu ti $configurator->enableTracy() zavolá totéž a původní volání přepíše.

Class „APP\Debugger“ not found

Chybějící use statement.

syntax error, unexpected identifier „Debugger“

Nevalidní php kód, bez kódu ti k tomu nikdo nic neřekne. Nejspíš by sis nejdřív měl projít, jak se vůbec píše PHP a používá Composer, jinak se budeš trápit s jakýmkoli frameworkem

MilanL
Člen | 7
+
0
-

Jak funguje procedurální PHP vím, s OOP PHP začínám, obecné OOP také znám.

Po 3 dnech hledání jsem to konečně našel, po nějakém updatu (2.4) se v Bootstrapu nenastavuje
$configurator->setDebugMode(Debugger::Development);
ale
$configurator->setDebugMode(true);

dakur
Člen | 493
+
+1
-

Je to popsané zde: https://doc.nette.org/…on/bootstrap#…

Debugger::enable(Debugger::Development) je to stejné co Debugger::enable(true), protože hodnota Debugger::Development je true. Nejspíš ti chybělo nad Debugger::enable() ještě use Tracy\Debugger; a/nebo jsi to volal před $configurator->enableTracy() či Bootstrap::boot().

Obecně však není tuto hodnotu dobrý nápad nastavovat natvrdo, pokud k tomu nemáš zvláštní důvod. Pak na to lehce zapomeneš a hops, každý si může v browseru přečíst tvoje credentials k databázi například, či další citlivé konfigurační údaje.

Proč to vlastně potřebuješ?

Editoval dakur (16. 8. 2023 9:06)

MilanL
Člen | 7
+
0
-

No chovalo se to jako by tam ta konstanta Debugger:Development nebyla nadefinovaná.

Produkční a vývojový server mám oddělený, web mám v omezené míře zatím v procedurálním PHP, začínám s převodem na NETTE – snad se to vyplatí.
Druhá varianta by byla pevná IP pracovního NTB, ale tu potřebuji občas měnit, NTB slouží též k servisním účelům, kdy se musím připojit s předem daným nastavením adres, navíc jsem někdy připojen kabelem jindy WI-FI. Nejsnadnější vidím tu řádku s nastavením toho režimu hodit do includovaného souboru a soubor umístit ve vyšší složce než jsou vlastní stránky, která se při upgradu nebude měnit.
Další variantou je dle návodů na NETTE rozdělení do modulů – dle přilášení a režimu uživatele, a nastavení toho develop režimu jen v Admin modulu.

Marek Bartoš
Nette Blogger | 1177
+
0
-

setDebugMode(($_COOKIE['debug'] ?? null) === 'your_super_secret_value')
Nebo si debug mód zapni přes cookie.

Editoval Marek Bartoš (16. 8. 2023 11:23)