Hibanaplózás a háttérben fájlba
Hogy lehet azt elérni, hogy ha az oldalamon kapnék egy előre nem látható fatal errort, akkor azt ne a képernyőre, hanem egy log fájlba írja? Nézegetem a manualt, de csak warningra találtam megoldást. Márpedig én hibanaplózni szeretnék, nem a figyelmeztetéseket csak.
■
habatűrő kódolás
nem írtad milyen szerveren kellene, de apache-ban van error log, az egy txt fájlba írja a php hibákat is.
Ha "elöre nem látható fatal_error"...
Másrészt a parse error az asszem mindenképp kijelzöre kerül, a fatal error nem,ha ugy van beállitva,de az sem biztos hogy sikerül naplozni,ha még elötte leáll a script...
Egyébként a set_error_handler() a megoldás,gondolom ezt taáltad Te is...
+html_errors illetve display_errors ini beállitások
+error_reporting()...
+saját hiba jelzésre a trigger_error()...
+manual....
display_errors jó lenne
display_errors
Üdv,
Felhő
Parse
fogadjunk? ;)
Üdv,
Felhő
Parse
Ha a php.ini-ben van eleve beállitva akkor igen,valoban;de ha az adott fájlban akkor nem)))
(én inkább futás közben szoktam beállitani,ezért eleve arra asszociáltam,sajna)
nem voltam uriember ;)
Üdv,
Felhő
log_errors
hozzáférés
Üdv,
Felhő
Miért ne?
log_errors "0" PHP_INI_ALL
error_log NULL PHP_INI_ALL
Sztem ez a kettő együtt már meg tudja csinálni, amit a kedves kollega kért. És be tudja állítani magának directory szinten. Mindez persze a doksiból idézve persze, nem próbáltam ki.
Normális esetben persze egy rendes hoston lenne, ahol hozzáfér a logjaihoz, mint például <reklám helye>.
lehetséges megoldások
Saját hibakezelővel elvileg nem tudod elkapni ezeket a hibákat, de azért van pár lehetőség ha abban a fájlban, ami indítja az alklamzásod nincs hiba (ez végül is tartható korlát).
Az egyik lehetőség, hogy regisztrálsz egy shutdown functiont. Ez meghívódik akkor is, ha valamilyen parse, vagy egyéb csúnya hiba van. Sok mindent innen nem fogsz tudni (legalábbis amikor legutóbb néztem, akkor a kimenet már le volt zárva, nem férsz hozzá), de annyit tudsz csinálni, hogy a program belépési pontján beállítod a $fatalError változót true-ra, majd a kilépsi ponton false-ra, és a shutdown functionban pedig ha ennek az értéke true (tehát menetközben megszakadt a pogram futása), akkor dobsz egy levelet Houstonba.
Másik megoldás, hogy egy output buffer kezelőt regisztrálsz. Ez szintén meg fog hívódni akkor is, ha durva hiba volt a kódban. Itt adott esetben annyival járhatsz jobba, hogy megteheted, hogy a displays_error-t bekapcsolva hagyod, és akkor itt a függvényen belül ki tudod parse-olni a szövegből a hibaüzenetket. Ezt meg tudod könnyíteni az error_(append|prepend)_string beállítások segítségével.
Ez utóbbiakra épül egy kicsit perverzebb 3. lehetőség, hogy ezeknek egy olyan JS-t adsz meg, ami utána kliens oldalon postolja el a hibát egy loggoló PHP-nak.
Üdv,
Felhő
még a manual is
Warning: Cannot modify header information - headers already sent by (output started at /var/www/hu.php.net/results.php:42) in /var/www/hu.php.net/include/layout.inc on line 81
Warning: Cannot modify header information - headers already sent by (output started at /var/www/hu.php.net/results.php:42) in /var/www/hu.php.net/include/layout.inc on line 82