Controlador de errores de PHP restablecer la conexión.

  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de Usuario
  • Registrado: Feb 17, 2005
  • Mensajes: 1585
  • Status: Offline

Nota Octubre 19th, 2009, 12:38 pm

Im que consigue un restablecimiento de la conexión cada vez que intenta iniciar sesión errores en un archivo dentro de mi controlador de errores. Si yo comente la tala, funciona?

PHP Código: [ Select ]
<?php
function depath_err($errno,$errstr,$errpath,$errline)
{
   $errortype = array(
               E_WARNING        => 'E_WARNING',
               E_NOTICE          => 'E_NOTICE',
               E_USER_ERROR      => 'E_USER_ERROR',
               E_USER_WARNING    => 'E_USER_WARNING',
               E_USER_NOTICE    => 'E_USER_NOTICE',
            E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR',
            E_DEPRECATED => 'E_DEPRECATED',
            E_USER_DEPRECATED => 'E_USER_DEPRECATED'
            );
 
 switch($errno)
 {
 case E_WARNING:
 case E_NOTICE:
 case E_USER_ERROR:
 case E_USER_WARNING:
 case E_USER_NOTICE:
 case E_RECOVERABLE_ERROR:
 case E_DEPRECATED:
 case E_USER_DEPRECATED:
 //Do not show these errors, just log them.
 
    $lf = fopen('C:/Apache2/logs/php_errors.log','a');//Open end of log file for writing
   if($lf !== FALSE)
   {
   fwrite($lf,'['.date('d-M-Y H-i-s').'] '.$errortype[$errno].': '.$errstr.' in '.$errpath.' on line '.$errline."\n");
   fclose($lf);
   }
 return true; //THIS CAUSES PHP NOT TO EXECUTE THE INTERNAL ERROR HANDLER.
 break;
 }
}
set_error_handler('depath_err');
?>
  1. <?php
  2. function depath_err($errno,$errstr,$errpath,$errline)
  3. {
  4.    $errortype = array(
  5.                E_WARNING        => 'E_WARNING',
  6.                E_NOTICE          => 'E_NOTICE',
  7.                E_USER_ERROR      => 'E_USER_ERROR',
  8.                E_USER_WARNING    => 'E_USER_WARNING',
  9.                E_USER_NOTICE    => 'E_USER_NOTICE',
  10.             E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR',
  11.             E_DEPRECATED => 'E_DEPRECATED',
  12.             E_USER_DEPRECATED => 'E_USER_DEPRECATED'
  13.             );
  14.  
  15.  switch($errno)
  16.  {
  17.  case E_WARNING:
  18.  case E_NOTICE:
  19.  case E_USER_ERROR:
  20.  case E_USER_WARNING:
  21.  case E_USER_NOTICE:
  22.  case E_RECOVERABLE_ERROR:
  23.  case E_DEPRECATED:
  24.  case E_USER_DEPRECATED:
  25.  //Do not show these errors, just log them.
  26.  
  27.     $lf = fopen('C:/Apache2/logs/php_errors.log','a');//Open end of log file for writing
  28.    if($lf !== FALSE)
  29.    {
  30.    fwrite($lf,'['.date('d-M-Y H-i-s').'] '.$errortype[$errno].': '.$errstr.' in '.$errpath.' on line '.$errline."\n");
  31.    fclose($lf);
  32.    }
  33.  return true; //THIS CAUSES PHP NOT TO EXECUTE THE INTERNAL ERROR HANDLER.
  34.  break;
  35.  }
  36. }
  37. set_error_handler('depath_err');
  38. ?>


¿Es un error de sintaxis no me llegaron o no soy se supone que debo hacer eso o qué? Im usando PHP 5.30. También traté de usar error_log (), parte divertida es que si el camino que se especifique barras invertidas (Windows) que no esté de error, pero no registra bien. Si yo uso el viejo y simple barras diagonales, se restablece la conexión y todavía no se registro.

Soy muy consciente de la capacidad de PHP para registrar los errores en su propio de la configuración del INI, sin embargo Im usando un controlador de errores por una razón específica.
There's no place like 127.0.0.1, badass part is now it's ::1
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Octubre 19th, 2009, 12:38 pm

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13458
  • Loc: Florida
  • Status: Offline

Nota Noviembre 2nd, 2009, 7:02 pm

Sólo por curiosidad, ¿hay alguna posibilidad de recurrencia con su código?
Tal vez debido al controlador de errores de manipulación de su propio error?

Yo sólo estaba mi conexión de muertos y he seguido de nuevo a una función recursiva que tenía una llamada glob en ella. Desde glob volvía la ruta original cuando no había nada que encontrar, la recursividad iba en un bucle infinito y PHP fue achicando.
Strong with this one, the sudo is.
  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de Usuario
  • Registrado: Feb 17, 2005
  • Mensajes: 1585
  • Status: Offline

Nota Noviembre 3rd, 2009, 12:41 am

Gracias por la punta, Im que busca en ella todavía. Se me escapa totalmente.
There's no place like 127.0.0.1, badass part is now it's ::1
  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de Usuario
  • Registrado: Feb 17, 2005
  • Mensajes: 1585
  • Status: Offline

Nota Noviembre 3rd, 2009, 1:38 am

¡Oh hombre, esta línea siguiente había algún tipo de error en la cadena de...

PHP Código: [ Select ]
<?php
//...
fwrite($lf,'['.date('d-M-Y H-i-s').'] '.$errortype[$errno].': '.$errstr.' in '.$errpath.' on line '.$errline."\n");
//...
?>
  1. <?php
  2. //...
  3. fwrite($lf,'['.date('d-M-Y H-i-s').'] '.$errortype[$errno].': '.$errstr.' in '.$errpath.' on line '.$errline."\n");
  4. //...
  5. ?>


Me imaginé que fuera, porque he suprimido con el operador @ y funcionó, lo que me sorprendió esto, porque pensé que el operador de error todavía se supone que pasan al controlador de errores, incluso en el caso de un error, que sería la problema de la recursividad que estaba buscando.

Ahora consiga esto, me quitó la función Date ()...

PHP Código: [ Select ]
<?php
//...
fwrite($lf,'[] '.$errortype[$errno].': '.$errstr.' in '.$errpath.' on line '.$errline."\n");
//...
?>
  1. <?php
  2. //...
  3. fwrite($lf,'[] '.$errortype[$errno].': '.$errstr.' in '.$errpath.' on line '.$errline."\n");
  4. //...
  5. ?>


Se carga la página bien, hice uno de estos: gif "alt =": scratchead: "title =" #Scratch Jefe ">

Yo era como WTH puede estar mal con la función de la fecha, así que después de comprobar el manual para determinar puse todo correctamente en él, he comprobado mi ini:

Código: [ Select ]
;date.timezone = America/New_York


Fue comentado...Me comentó que las Naciones Unidas, se reinicia, fijo...

El jodido parte es que tengo un millón de implementaciones de otra fecha en el sitio web, de modo que ¿cómo es que los no error, a menos que estaban en el controlador de errores?
There's no place like 127.0.0.1, badass part is now it's ::1
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13458
  • Loc: Florida
  • Status: Offline

Nota Noviembre 3rd, 2009, 9:41 am

Mi conjetura es que sólo el controlador de errores se ejecuta en algún tipo de seguridad de alcance / contexto en el que algunos reemplazos calculado para los valores que faltan iniciativas no están disponibles.

Realmente no lo sé, y acaba de eliminar la copia del código fuente PHP Acostumbro a ver a través de un par de días, mientras que la limpieza y darme cuenta de que no había visto en meses.
Strong with this one, the sudo is.

Publicar Información

  • Total de mensajes en este tema: 5 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 130 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC