Foros del Web » Programando para Internet » PHP »

[Aporte] Explicando los errores

Estas en el tema de [Aporte] Explicando los errores en el foro de PHP en Foros del Web. Mientras estás desarrollando alguna aplicación, debes activar los mensajes de errores. Se recomienda que cuando está en producción no despliegues los errores o los personalises ...
  #1 (permalink)  
Antiguo 14/09/2009, 11:15
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 1 mes
Puntos: 1517
[Aporte] Explicando los errores

Mientras estás desarrollando alguna aplicación, debes activar los mensajes de errores. Se recomienda que cuando está en producción no despliegues los errores o los personalises (puedes usar set_error_handler). Para activar los mensajes de errores debes ir al php.ini y buscar la linea que dice display_errors debes activarlo, On. Si deseas mantener un log de los errores debes buscar la linea log_errors y asegurarte que este en On (por defecto viene así), de lo contrario modifícalo a Off. Si está activado debes verificar también donde lo está guardando eso se encuentra en la linea que dice error_log, si esta comentada, debes descomentarla para que se guarde la información. Si estás usando apache, este guarda también los errores de PHP que haya encontrado, debes buscar el httpd.conf de Apache y buscar la línea que dice ErrorLog, ahí encontrarás la ruta donde están los errores. Como todo lenguaje de programación, existe diferentes niveles de errores. Los principales son (en orden de gravedad, de menor a mayor):

E_NOTICE errores de notas. Estos indican que se presento un error pero no es grave. Por lo general son intencionales, como usar una variable que no ha sido iniciada.
E_PARSE error de sintaxis. Puede ocurrir cuando no han cerrado una llave (simbolo de })
E_WARNING advertencia. Se presento un error grave pero no es crítico. Ejemplo, es cuando se usa inadecuadamente una función o algun codigo no se detiene.
E_ERROR error crítico. Ya en este caso se detiene el código. Por ejemplo, tratando de usar alguna librería sin haberla habilitado anteriormente.

Para modificar que tipo de error quieres que se despliegue, debes modificar en el php.ini el error_reporting. Por lo regular, por defecto, viene como E_ALL & ~E_NOTICE. Esto quiere decir que se mostaran todos los errores, menos los errores de notas. Cuando se está empezando a desarrollar un proyecto se recomienda usarlo con solamente E_ALL, de esta forma podremos ver todos los errores y así tomar todas las medidas necesarias. Pero en muchos hosting lo tienen declarado de esta forma:
Cita:
error_reporting = E_ALL & ~E_NOTICE
El motivo de ello es que muchas veces vamos a estar creando variables sin haberlas iniciado, por lo tanto, quitamos las advertencias de que hay una variable que no ha sido iniciada, colocando & ~E_NOTICE.

Si no podemos acceder al php.ini porque estamos pagando o usando algún hosting, podemos hacer uso de la función error_reporting. Ejemplo, si no queremos mostrar ningun error lo declaramos:
Código PHP:
Ver original 
La estructura de los errores es de esta forma (hay variantes, pero esto es un aproximado):

[Tipo de error]:[Donde está el error]: [Resumen del error, archivo donde está el error y línea aproximada del error]

Ejemplos:
Cita:
PHP Notice: Undefined index: codigo_seguridad in [ DIRECCION ] on line [ NUMERO DE LINEA DONDE ESTA EL ERROR ]
Parse error: parse error in [ DIRECCION ] on line [ NUMERO DE LINEA DONDE ESTA EL ERROR ]
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in [ DIRECCION ] on line [ NUMERO DE LINEA DONDE ESTA EL ERROR ]
Fatal error: Call to undefined function: mssql_connect() in [ DIRECCION ] on line [ NUMERO DE LINEA DONDE ESTA EL ERROR ]
Es importante leer el error y conocer que es lo que nos indica, así nos podremos desenvolver y encontrar el error con menos dificultad. En ocaciones, el error no se encuentra en la línea que te esta indicando, ya que posiblemente no terminaste la sentencia usando el punto y coma (;). El error que produce es un Parse error. Por eso indique que es un aproximado la línea que te esta mencionando. Ya que puede darse el caso que el error está una o varias líneas antes de donde te esta indicando.

IMPORTANTE: LEE lo que te indica el error y busca la línea que te indica el error, tambien busca las lineas anteriores. No te desesperes. Siempre es bueno tomar un descanso cuando algo nos sale mal y no lo encontramos.

Espero comentarios y mejoras.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 04/01/2010 a las 09:00
  #2 (permalink)  
Antiguo 14/09/2009, 11:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 1 mes
Puntos: 2135
Respuesta: [Aporte] Explicando los errores

Gracias por tu aporte.
  #3 (permalink)  
Antiguo 15/09/2009, 09:33
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 3 meses
Puntos: 23
Respuesta: [Aporte] Explicando los errores

Muchas gracias por el aporte Abimaelrc, lo tendré en cuenta en todos mis errores.

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #4 (permalink)  
Antiguo 01/03/2010, 15:15
 
Fecha de Ingreso: agosto-2008
Mensajes: 367
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: [Aporte] Explicando los errores

es un muy buen aporte... se agradece
  #5 (permalink)  
Antiguo 01/03/2010, 17:28
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: [Aporte] Explicando los errores

se agradece el aporte. eso es justo lo que queria aprender.

saludos.
  #6 (permalink)  
Antiguo 06/06/2010, 19:53
 
Fecha de Ingreso: diciembre-2007
Mensajes: 6
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: [Aporte] Explicando los errores

Hola, mira realmente tu aporte esta muy bien hecho y te estoy agradecido, pero en mi caso no me sirvio de nada, vereis, sabras que de el archivo php.ini esta el dist y el recommended, pues yo tenia el recommended instalado por defecto y aunque modificara las variables display.errors y error.repoport no funcionaba y tuve que copiar el php.ini-dist y sustituirlo por el mio para que funcionara.... si puedes incluirlo en tu articulo para que ningun pobre usuario como yo se lleve toda liao la noche hasta conseguir dar con la tecla... muchas gracias

Etiquetas: aportes
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 01:42.