Tracy\DeferredContent::sendAssets() called after some output has been sent

m.brecher
Backer | 177
+
0
-

Ahoj !

Narazil jsem na produkčním serveru na tento problém s debuggerem:

V defaultním production módu na produkčním serveru aplikace funguje

  • když zapnu developer mód:

class Bootstrap
{
	public static function boot(): Configurator
	{
		$configurator = new Configurator;
		$appDir = dirname(__DIR__);

        $configurator->setDebugMode('84.42.196.162'); // zapnu developer mode na production serveru

		$configurator->enableTracy($appDir . '/log');  // zde vyhodí výjimku LogicException

		.......

        }

		return $configurator;
	}
}

Vyhodí v Bootstrap::boot() výjimku:

LogicException
Tracy\DeferredContent::sendAssets() called after some output has been sent.
Try Tracy\OutputDebugger to find where output started.

s poznámkou:

$logDirectory	 '/data/www/20862/ppcs_cz/www/log'  may be not true

Hodnota $logDirectory je ale správně, navíc při vypnutí developer módu aplikace funguje.

Zkusil jsem prozkoumat výstup pomocí:

\Tracy\OutputDebugger::enable();

Ale na výstupu který se takto zobrazil byl jako první výstup kód z @layout-latte, takže v aplikaci zdá se chyba není.

V položce výpisu výjimky Last muted error byla tato poznámka:

Warning: is_dir(): open_basedir restriction in effect. File(/data/www/20862/tmp) is not within the allowed path(s): (/data/www/20862/ppcs_cz)

Což by ale asi nemělo být příčinou – jak vyplynulo ze zdrojového kódu, jde o test adresáře pro uložení session, a to je nastaveno na serveru bezpochyby správně: is_dir($dir = session_save_path()).

Na serveru mám verze:

PHP 8.0.15
Tracy 2.9.0

Měl by někdo nápad, kde by mohla být chyba ??

Děkuji za jakýkoliv návod nebo tip.

m.brecher
Backer | 177
+
0
-

Ahoj !

Upgradoval jsem na poslední verzi Tracy 2.9.3 a problém je vyřešený.