Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/09/2009, 11:15
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 7 meses
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