Autor | Zpráva | ||
---|---|---|---|
andy Profil * |
#1 · Zasláno: 14. 5. 2006, 05:57:11
Ahoj potřeboval bych poradit... snažím se o bezpečnou aplikaci (i pro php4).
V aplikaci nastavím error_reporting(0); ale kdyby se tam náhodou vytvořila nějaká chyba, potřeboval bych ji zpracovat: - zapsat do logu - pokud ta chyba bude fatalní, tak přesměrovat na chybovku 500 - případně informovat admina Jak toto mám řešit? V kódu mám (teda budu mít) trigger_error, které mi zpracuje funkce set_error_handler, ale nevím jak zpracovat mnou neošetřené chyby, které nastanou přiběhu...? Děkuji za odpovědi |
||
andy Profil * |
#2 · Zasláno: 16. 5. 2006, 07:25:34
popřípadě prosím o radu, jak řešit chyby ve větších aplikacích a jak je řešíte vy ;)
|
||
avaranger Profil |
#3 · Zasláno: 16. 5. 2006, 08:39:18
Nevim. Ale chci to sledovat pres mail, tak sem musel poslat tenhle prispevek bez obsahu... :P
|
||
Časová prodleva: 3 dny
|
|||
andy Profil * |
#4 · Zasláno: 18. 5. 2006, 20:57:52
to jste se jeste nikdo nezamysleli nad resenim chyb v php?
|
||
avaranger Profil |
#5 · Zasláno: 18. 5. 2006, 22:55:41
Ja chyby resim zapisem do logu a dal se o ne nestaram ;)
|
||
avaranger Profil |
#6 · Zasláno: 18. 5. 2006, 22:57:21
Jedine co jsem nasel:
<?php function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) { // timestamp for the error entry $dt = date("Y-m-d H:i:s (T)"); $err=""; // define an assoc array of error string // in reality the only entries we should // consider are 2,8,256,512 and 1024 $errortype = array ( 1 => "Error", 2 => "Warning", 4 => "Parsing Error", 8 => "Notice", 16 => "Core Error", 32 => "Core Warning", 64 => "Compile Error", 128 => "Compile Warning", 256 => "User Error", 512 => "User Warning", 1024=> "User Notice" ); // set of errors for which a var trace will be saved $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE); $err .= "\t<i>".$dt."</i>\n"; $err .= "\t<b>".$errmsg."</b>\n"; $err .= "\tV soubotu: <i>".$filename."</i>\n"; $err .= "\tChyba na řádku <b>".$linenum."</b><hr>\n"; //$err .= ""; /* if (in_array($errno, $user_errors)) $err .= "\t<vartrace>".wddx_serialize_value($vars,"Variables")."</vartrace>\n" ;*/ //$err .= "</errorentry>\n\n"; // for testing // echo $err; // save to the error log, and e-mail me if there is a critical user error //error_log($err, 3, "logs/error.log"); //if ($errno == E_USER_ERROR) // mail("phpdev@example.com","Critical User Error",$err); echo nl2br($err); } $old_error_handler = set_error_handler("userErrorHandler"); ?> |
||
avaranger Profil |
#7 · Zasláno: 18. 5. 2006, 22:58:39
|
||
Pachollini Profil |
#8 · Zasláno: 19. 5. 2006, 10:40:47
Používám něco podobného, jako je na http://www.cesky-hosting.cz/napoveda-detail-php-skripty.html#zobrazeni -chybovych-zprav
jenom si ty chyby házím go logu. |
||
andy Profil * |
#9 · Zasláno: 19. 5. 2006, 13:32:30
[i]Jedine co jsem nasel:
<?php function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) { // timestamp for the error entry $dt = date("Y-m-d H:i:s (T)"); $err=""; // define an assoc array of error string // in reality the only entries we should // consider are 2,8,256,512 and 1024 $errortype = array ( 1 => "Error", ...... je ale problem v tom, ze ja jsem si tam dal neco podobneho.. ale funguju mi to jen kdyz tam poslu nejakou trigger error ale kdyz udelam nejakou chybu v kodu tak mi ji tam neposle... tak sem myslel ze je to jen pro vlastni chyby...? nebo nemam pravdu? |
||
-error414 Profil * |
#10 · Zasláno: 19. 5. 2006, 13:58:21
andy
No ono asi nepude zachytavat parser chyby jinam nez do logu vubec uz to nepujde zachytavat pomoci PHP. Protoze kdyz vytvoris v PHP parse error tak se kod ani nevykona. |
||
Retal Profil |
#11 · Zasláno: 20. 5. 2006, 23:19:17
Používám error handler (viz Pacholliniho odkaz) (error reporting na max), chyby ukládám do logu a pomocí CRONu si je nechávám posílat v pravidelných intervalech na e-mail.
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0