Foros del Web » Programando para Internet » PHP »

Manejo De Errores

Estas en el tema de Manejo De Errores en el foro de PHP en Foros del Web. Saludos. He estado leyendo un poco sobre el manejo de errores en PHP y dice que las directivas más importantes para el reporte de errores ...
  #1 (permalink)  
Antiguo 08/08/2007, 11:42
Avatar de R4s3c  
Fecha de Ingreso: noviembre-2006
Mensajes: 22
Antigüedad: 17 años, 5 meses
Puntos: 0
Mensaje Manejo De Errores

Saludos.

He estado leyendo un poco sobre el manejo de errores en PHP y dice que las directivas más importantes para el reporte de errores son: error_reporting, display_errors y log_errors.

En mi servidor tengo a display_errors y a log_errors ensendidos pero error_reporting tiene el valor de 2039, eso quiere decir que está funcionando?

Otra cosa que leí dice:
"The display_errors and log_errors directives can be used to determine how errors are reported. If display_errors is turned on, errors are outputted to the script’s output; generally speaking, this is not desirable in a production environment. Under those circumstances, you will instead want to turn on log_errors, which causes errors to be written to your web server’s error log."
Como hago para ver el web server’s error log?

También dice:
"Your scripts can declare a catch-all function that is called by PHP when an error condition occurs by calling the set_error_handler() function:

Código PHP:
    $oldErrorHandler '';
    function 
myErrorHandler ($errNo$errStr$errFile$errLine$errContext) {
        
logToFile("Error $errStr in $errFile at line $errLine");
        
// Call the old error handler
        
if ($oldErrorHandler) {
            
$oldErrorHandler ($errNo$errStr$errFile$errLine$errContext);
        }
    }
    
    
$oldErrorHandler set_error_handler ($oldErrorHandler); 
As you can see, the function name of the old error handler (if any) is returned by the call to set_error_handler() —this allows you to stack several error handlers on top of each other, thus making it possible to have different functions handle different kinds of errors.-"

De lo que entiendo ahí... Your scripts can declare a catch-all function that is called by PHP when an error condition occurs by calling the set_error_handler() set_error_handler es abstracta? O uno la llama y ya? Y cuando abría que llamarla?. Esta parte me pareció muy complicada, si alguien la entiende este un tema que sería bueno que todos supiéramos.
  #2 (permalink)  
Antiguo 08/08/2007, 15:34
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Manejo De Errores

Habría que ver 2039 que sumatoria es, pero estimo que es un "E_ALL ^ E_NOTICE", y tendrías que tener solo el E_ALL.

Ahora, con el tema de error handler, al inicio de la pagina hace:

Código PHP:
function error_handler($errno$errstr$errfile$errline$errctx) {
    
$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"2048=>"PHP5 Strict Warning"); 
    
$error_handler_string =  "<b>Tipo de error: </b>"$errortype[$errno]." (".$errno.")<br><b>Descripción: <font color=ff0000>".$errstr."</font></b><br><b>El en archivo: </b>".$errfile."<br><b>En la línea: </b>".$errline."<br><br>";
    die(
$error_handler_string);
}
set_error_handler("error_handler");
error_reporting(E_ALL); 
En si, dentro de la función TUYA vas a tener el control del error. Ahí lo que te puse es que lo ponga en pantalla, pero podrías hacer que te mande un email o cosas así, ahora de esta manera el control lo tenes vos, para probarlo podes ahí debajo hacer un echo $var_no_declarada; y lo verás.

Espero que te haya ayudado.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 14/02/2008, 13:40
Avatar de poloche  
Fecha de Ingreso: abril-2006
Ubicación: cochabamba
Mensajes: 93
Antigüedad: 18 años
Puntos: 1
Re: Manejo De Errores

no se si estoy yo mal pero la verdad es que no me funciona o por lo menos no como yo espero
mira yo le pongo

$a = 1 / 0;

y me muestra el error bien
pero si hago una consulta a base de datos con una tabla que no existe no me da el warningque se supone eberia salir.

podrias ayudarme con eso por favor?
  #4 (permalink)  
Antiguo 14/02/2008, 13:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Manejo De Errores

poloche, te pido que no revivas temas viejos, es mejor que abras un tema nuevo con la referencia al tema que tienes la duda, o la información completa en el tema.

Por otro lado te comento que los errores de SQL no pasan por PHP, si quieres que pasen deberás de lanzarlos tu mismo.

Saludos.
  #5 (permalink)  
Antiguo 14/02/2008, 14:55
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Manejo De Errores

Cita:
Iniciado por poloche Ver Mensaje
no se si estoy yo mal pero la verdad es que no me funciona o por lo menos no como yo espero
mira yo le pongo

$a = 1 / 0;

y me muestra el error bien
pero si hago una consulta a base de datos con una tabla que no existe no me da el warningque se supone eberia salir.

podrias ayudarme con eso por favor?
GatorV tiene razón, es más que viejo este thread, aún así:
Para tomar el error de un query por ejemplo podes hacer esto:

Código PHP:
$query "select * from tabla_no_existe";
$r mysql_query$query ) or trigger_error' [ '.$query.' ]' mysql_error(), E_USER_ERROR ); 
Suerte.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:13.