Foros del Web » Programando para Internet » PHP »

Capturar Fatal Error

Estas en el tema de Capturar Fatal Error en el foro de PHP en Foros del Web. Hola gente, tengo un script php que es llamado con un plugin raro propietario el cual no tengo acceso al codigo fuente. entonces la unica ...
  #1 (permalink)  
Antiguo 24/09/2014, 08:27
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Capturar Fatal Error

Hola gente,
tengo un script php que es llamado con un plugin raro propietario el cual no tengo acceso al codigo fuente.
entonces la unica forma de saber que sucede en ese script es guardar la salida en un log. Por ejemplo con esto guardo la salida del infophp:

Código PHP:
Ver original
  1. <?
  2. $variable = ob_get_contents();
  3.  
  4. $fp = fopen("result_php_info.php", 'w');
  5. fwrite ($fp, $variable);
  6. fclose($fp);
  7. ?>

el problema es cuando ocurre un fatal error no puedo capturarlo en el log.

alguna sugerencia?
  #2 (permalink)  
Antiguo 24/09/2014, 09:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Capturar Fatal Error

Los errores fatales no se pueden capturar, por eso son fatales.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/09/2014, 09:37
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Capturar Fatal Error

vi por ahi varios script pero ninguno me pudo resolver el problema

lo que pude hacer ahora es que me vaya capturando el error_get_last
al menos con eso pude encontrar el error
  #4 (permalink)  
Antiguo 24/09/2014, 09:40
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Capturar Fatal Error

Cita:
el problema es cuando ocurre un fatal error no puedo capturarlo en el log.
Puedes probar a habilitar el error_reporting, algunas veces php al ocurrir un error fatal simplemente mata la aplicacion pero no muestra ningun cartel o detalle de que es lo que paso, quizas ese es el el problema que estas teniendo.

Por otro lado, como menciona @pateketrueke los errores fatales no pueden ser atrapados con un try .. catch comun.

Tambien puedes revisar: http://php.net/manual/es/function.set-error-handler.php en el ejemplo del manual parace que de esta atrapando un error fatal, aunque luego de eso se aborta el script, quizas te sirva para hacer un log del error.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 24/09/2014 a las 09:46
  #5 (permalink)  
Antiguo 24/09/2014, 10:09
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Capturar Fatal Error

Si vi el ejemplo y caputa el error con trigger, bueno tendria que adaptarlo para que guarde los errores en un log.

Alguno dirá por ahi: "y por que no te fijas en el log del apache?"
lo mismo me pregunto yo?
por qué el apache no guarda el 100% de los errores en el log?
o solo guarda los errores impresos en pantalla?
  #6 (permalink)  
Antiguo 24/09/2014, 10:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Capturar Fatal Error

Un error fatal es un error que supera toda posibilidad para ser administrado por el sistema. Por eso @paketetrueke te dice que no son capturables.
Quere trapear un FE, es lo mismo que intentar atrapar el BSOD... existen para indicar que se ha producido una catástrofe irrecuperable. Y eso no es atrapable...
En un FE del sistema no existen contenedores de error posibles.
Su fuera posible loguearlos, serían atrapables y administrables... y en consecuencia no serían FE, sino excepciones.

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 24/09/2014, 17:16
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Capturar Fatal Error

Código PHP:
Ver original
  1. <?php  
  2.     error_reporting(E_ALL);
  3.     ini_set("display_errors", 1);
  4.     ini_set('error_log','errores.log');
  5.  
  6.     yo_no_estoy_definida_asi_que_exploto();

Luego de ejecutarse, el archivo errores.log ubicado en la misma carpeta que el archivo, tiene estos datos:
Cita:
[24-Sep-2014 23:14:38 UTC] PHP Fatal error: Call to undefined function yo_no_estoy_definida_asi_que_exploto() in C:\Servidor\www\teste.php on line 6

[24-Sep-2014 23:14:38 UTC] PHP Stack trace:

[24-Sep-2014 23:14:38 UTC] PHP 1. {main}() C:\Servidor\www\teste.php:0
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Etiquetas: fatal, variable
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 13:46.