Foros del Web » Programando para Internet » PHP »

Eliminar mensajes de error

Estas en el tema de Eliminar mensajes de error en el foro de PHP en Foros del Web. Saludos a todos. Necesito saber como puedo evitar que salgan los feos reportes de error que produce PHP. Ej: Warning: session_start(): Cannot send session cookie ...
  #1 (permalink)  
Antiguo 28/08/2011, 00:38
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 3 meses
Puntos: 37
Pregunta Eliminar mensajes de error

Saludos a todos. Necesito saber como puedo evitar que salgan los feos reportes de error que produce PHP. Ej:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\WebApps\Venid y Orad\Index.php:2) in C:\WebApps\Venid y Orad\Index.php on line 2

Me gustaría que no salieran estos errores, aún cuando el código tenga alguna incongruencia. Algo así como el On Error Resume Next de Visual Basic. Gracias
  #2 (permalink)  
Antiguo 28/08/2011, 00:45
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Eliminar mensajes de error

La línea del error es la número dos, entonces la 1 supongo que es <?php...
De ser así, guarda tal archivo con formato UTF-8 sin BOM (ésto se puede hacer desde Notepad++ o similares).

Sobre los errores, te recomiendo no esconderlos. Por qué? Distintas razones:
*Esconderlos consume recursos
*Un código bien estructurado y planificado no debería tirar errores
*Los errores nos ayudan a decifrar problemas
*Con los errores nos damos cuenta que algo anda mal. Imagínate que tienes un script que no debe fallar en nada y por mala suerte falla una línea, crasheando el script completo sin darnos cuenta..

En fin, hay muchísimas razones... Es mil veces mejor planificar bien un código

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 28/08/2011, 06:11
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 18 años, 6 meses
Puntos: 14
Respuesta: Eliminar mensajes de error

En un servidor de explotación o producción suele ser una buena idea desactivar los mensajes de error, tal y como dice Sourcegeek. Es decir, en un servidor de desarrollo nunca deberías ocultar los errores.

Creo que, para errores puntales que generan algo de salida por pantalla, se puede usar la "@" poniéndola delante de cada línea.

Otra forma, sería utilizar la dictiva error_reporting para indicarle a PHP como debe de comportarse ante los errores.

Añado a la lista de cosas que dice Sourcegeek
  • Los errores nunca deben utilizarse para controlar el flujo del código
__________________
No hay cuerda desafinada sino músico progresivo
  #4 (permalink)  
Antiguo 28/08/2011, 11:53
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 3 meses
Puntos: 37
Respuesta: Eliminar mensajes de error

Saludos hermanos. Muchas gracias por su participación y su ayuda. Yo he montado un servidor de prueba, donde sí me conviene ver los errores. El problema es el siguiente:

Hay errores (ERROR) y advertencias (WARNING).

Los errores nos advierten de que algo anda mal, pero los warnings a veces nos advierten de cosas que nosotros sabemos que van a seceder y realmente no son críticas en determinado momento. A eso me refiero cuando digo de esconderlas. Mientras estoy probando el producto necesito que se vean esos warnings, pero cuando suba la web al servidor, ya probada con todo y sus warnings, necesito que no le vayan a salir esos mensajes al usuario. Por Ej:

El caso que presento me lo da porque estoy reabriendo una sesion que ya está abierta. Eso yo lo se, y a pesar de eso la pagina funciona bien, solo es una advertencia que yo domino, por lo tanto no me conviene que le salga al usuario.

No se si me explico. Ustedes que creen?

Muchas gracias por su interes de ayudar y todas sus respuestas.
  #5 (permalink)  
Antiguo 28/08/2011, 11:56
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 3 meses
Puntos: 37
Respuesta: Eliminar mensajes de error

Saludos hermanos. Muchas gracias por su participación y su ayuda. Yo he montado un servidor de prueba, donde sí me conviene ver los errores. El problema es el siguiente:

Hay errores (ERROR) y advertencias (WARNING).

Los errores nos advierten de que algo anda mal, pero los warnings a veces nos advierten de cosas que nosotros sabemos que van a seceder y realmente no son críticas en determinado momento. A eso me refiero cuando digo de esconderlas. Mientras estoy probando el producto necesito que se vean esos warnings, pero cuando suba la web al servidor, ya probada con todo y sus warnings, necesito que no le vayan a salir esos mensajes al usuario. Por Ej:

El caso que presento me lo da porque estoy reabriendo una sesion que ya está abierta. Eso yo lo se, y a pesar de eso la pagina funciona bien, solo es una advertencia que yo domino, por lo tanto no me conviene que le salga al usuario.

No se si me explico. Ustedes que creen?

Muchas gracias por su interes de ayudar y todas sus respuestas.
  #6 (permalink)  
Antiguo 28/08/2011, 12:35
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Eliminar mensajes de error

Eso es fácil de prevenir.. Si tu sesión ya está abierta, en alguna parte del archivo la abriste, entonces, toma éste ejemplo como referencia:
Código PHP:
Ver original
  1. <?php
  2. $_SESSION['ini'] = true;
  3.  
  4. include('pagina.php');

Ahora, en pagina.php
Código PHP:
Ver original
  1. <?php
  2. if (!isset($_SESSION['ini'])) {
  3.     session_start();
  4.     $_SESSION['ini'] = true;
  5. }

Ves que se puede solucionar?
Cita:
*Un código bien estructurado y planificado no debería tirar errores
Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #7 (permalink)  
Antiguo 28/08/2011, 16:46
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 3 meses
Puntos: 37
Respuesta: Eliminar mensajes de error

Saludos a todos. Sourcegeek, eso es precisamente lo que yo necisitaba. Lo ideal es preguntar si la sesión está abierta antes de abrirla. Tu tienes toda la razón cuando dices que un código bien estructurado no debe dar errores. Aprovecho para comentarte otro caso similar que me pasa.

Verás, yo voy a mandar un email desde php y utilizo la función mail('destino'. ...otros parametros').

Cuando 'destino' es una dirección email válida y existente, o sea, el envio se realiza exitosamente, no pasa nada. Si el envío falla mail devuelve false. Entonces yo hago:

if(mail('destino',...otros parametros...)){
echo 'Error al enviar email';
}

Si el envio falla en resultado es:

error: bla bla bla que si la dirección no es válida bla bla bla
Error al enviar amail

Aún cuando preveo un mensaje de error personalizado me sigue saliendo el letraro feo de error encima.

En este caso como puedo evitar que pase eso? Gracias.

Etiquetas: mensajes
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:22.