Nette:Debug – nastavení zobrazení
- Tomas
- Člen | 3
Zdravím,
provizorně jsem nasadil Debug na starší aplikaci která není napsána
v Nette.
Můj „problém“:
pokud jsem to dobře pochopil, tak Debug v produkčním prostředí
(Debug::enable(TRUE);
) zapisuje chyb do souboru, ale k uživateli
se vrátí pouze prázdná stránka. Jde Debug nějak přimět k tomu, aby po
zalogování chyby zavolal nějakou metodu, nebo případně poslal na výstup
HTML soubor aby návštěvník nemusel koukat na prázdnou stránku?
Díky za všechny odpovědi
T.
- Tomas
- Člen | 3
Děkuju za nápad, bohužel nefunguje.
Pokud vytvořím chybu:
# index.php
<?php
require_once 'loader.php';
Debug::enable(Debug::PRODUCTION);
try {
require_once 'class_with_Bug.php';
Bug::Vypis();
} catch (Exception $e) {
echo 'Máš tam chybu, voe!';
Debug::processException($e);
}
#class_with_Bug.php
<?php
class Bug {
private static function Vypis() {
echo 'Chráněná metoda :)';
}
}
tak se stejně objeví jenom prázdná stránka :(
- Ondřej Mirtes
- Člen | 1536
Nevím, který level chyby se vyhodí, pokud přistupuješ k zapouzdřené metodě, ale Laděnka potřebuje být pro zachycování Parse/Fatal errorů includována v jiném souboru, než ve kterém se ta chyba děje. Takže includování loader.php vystrč ještě mimo ten soubor, který chybu vyvolává :)
- kravčo
- Člen | 721
Tomas napsal(a):
… tak se stejně objeví jenom prázdná stránka :(
Lepšie na prvotné testovanie bude asi vyhodenie výnimky:
// ...
try {
throw new Exception;
} catch (Exception $e) {
echo 'Máš tam chybu, voe!';
Debug::processException($e);
}
// ...
Ak ani toto nepomôže, skontroloval by som ešte output buffering…
- _Martin_
- Generous Backer | 679
Tomas napsal(a):
Děkuju za nápad, bohužel nefunguje.
Jak jsem říkal, tímhle způsobem jde zachytávat jen výjimky. Fatální chyby takto zachytit nejde. Což by vadit nemělo, předpokládám, že není velká pravděpodobnost, aby u aplikace na ostrém serveru docházelo opakovaně k fatálním chybám.
- David Grudl
- Nette Core | 8228
Přidal jsem Debug::$onFatalError
function myErrorHandler()
{
// zobrazi nejakou stranku
require dirname(__FILE__) . '/error.php'; // cesta ke skriptu MUSI BYT ABSOLUTNI!
}
Debug::enable();
Debug::$onFatalError[] = 'myErrorHandler';