Autor Zpráva
Tirus
Profil
Potřeboval bych poradit, jak si napsat error handler aby se nezapisovalo do log souboru co je nastaven v php.ini ci jinde, ale aby celé errory obsluhovala má třída. Co vše je k tomu potřeba? A jde to vůbec?

Moderátor Joker: Titulek „Error Handler“ byl moc obecný.
Joker
Profil
set_error_handler, mimochodem první výsledek v Google na „php error handler“ a třetí na „error handler“ (původní titulek tohoto vlákna).
Tirus
Profil
Joker:
to jsem si take nasel, ovsem kdyz to takto udelam, tak pri prvnim parse erroru mi to nezafunguje...
Davex
Profil
Tirus:
Parse error vznikne ještě před spuštěním skriptu, takže jí nemůžeš v tom samém skriptu ošetřit.
Tirus
Profil
Davex:
co tím vším tedy mohu odchytit?
Davex
Profil
Mělo by to být popsáno v dokumentaci - viz [#2] Joker.
Joker
Profil
Tirus:
co tím vším tedy mohu odchytit?
Je to v té dokumentaci (resp. tam je vyjmenované, co všechno tím nejde odchytit), ale logickou úvahou set_error_handler se volá ve skriptu, takže aby chyba vůbec šla odchytit, musí:
1. skript vůbec jít spustit (což je například právě E_PARSE, kdy skript není platný PHP kód)
2. se skript dostat alespoň k tomu volání set_error_handler (takže nejdou zachytit chyby, které nastaly předtím)
3. být možné error handler zavolat (čili nejdou odchytit chyby kdy nelze pokračovat ve zpracování, jako třeba E_ERROR)

Tahle úvaha víceméně stačí pro běžné situace, pro další omezení viz ta dokumentace.
Jan Tvrdík
Profil
Tirus:
Parse error jde odchytit kombinací register_shutdown_function a error_get_last. Jedinou podmínkou je, že nesmí být (pochopitelně) parse error v souboru, kde ten handler registruješ.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: