Tracy\DeferredContent::sendAssets() called after some output has been sent
- m.brecher
- Generous Backer | 864
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.