PHP-Fehlerbehandlung Zurücksetzen Verbindung.

Beitrag Oktober 19th, 2009, 12:38 pm

Im immer eine Verbindung zurückgesetzt, wenn ich versuche, Fehler in einer Datei in meinem Fehlerhandler anmelden. Wenn ich kommentieren Sie die Protokollierung, funktioniert es?

PHP Code: [ Download ] [ 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. ?>


Ist es ein Syntaxfehler vermißte ich oder bin ich nicht tun sollen, dass, oder was? Im PHP 5.30. Ich habe auch versucht mit error_log (), ist lustig teilweise, wenn der Weg, den ich angeben, ist Backslashes (WINDOWS) es nicht reparieren, aber es funktioniert nicht anmelden entweder. Wenn ich das gute alte Schrägstriche zu verwenden, setzt es die Verbindung und immer noch nicht anmelden.

Im wohl bewusst, die Fähigkeit von PHP, um Fehler auf eigene aus der ini Konfigurationsprotokoll jedoch Im mit einem Fehler-Handler für einen bestimmten Grund.
Why no, no I'm not.
  • Anonymous
  • Bot
  • No Avatar
  • Registriert: 25 Feb 2008
  • Beiträge: ?
  • Loc: Ozzuland
  • Status: Online

Beitrag Oktober 19th, 2009, 12:38 pm

  • joebert
  • Weathered
  • Genius
  • Benutzeravatar
  • Registriert: Feb 10, 2004
  • Beiträge: 11886
  • Loc: Clearwater, FL
  • Status: Offline

Beitrag November 2nd, 2009, 7:02 pm

Nur aus Neugier, ist es eine Chance der Rekursion mit Ihrem Code?
Vielleicht wegen der Fehlerbehandlung Umgang mit seinen eigenen Fehler?

Ich war gerade dabei meine Verbindung getötet und ich verfolgte sie zurück, um eine rekursive Funktion, die einen Aufruf in glob hatte. Seit glob kehrte der ursprüngliche Pfad, wo es nichts zu finden war, geht die Rekursion in einer Endlosschleife und PHP war es aufgibt.
Why yes, yes I am.

Beitrag November 3rd, 2009, 12:41 am

Danke für den Tipp, Im looking into it still. Totally entzieht sich mir.
Why no, no I'm not.

Beitrag November 3rd, 2009, 1:38 am

Oh Mann, war das folgende Zeile irgendeine Art von Fehler in die Zeichenfolge...

PHP Code: [ Download ] [ 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. ?>


I figured it out, weil ich es unterdrückt mit dem @-Operator und es hat funktioniert, was ich wollte überrascht, weil ich dachte, der Fehler Betreiber sollte immer noch Fehler an den Handler selbst im Falle eines Fehlers, der die vergehen, Rekursion Problem, das ich suchte.

Now get this, nahm ich das Datum ()-Funktion...

PHP Code: [ Download ] [ 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. ?>


Page Belastungen gut, habe ich einer der folgenden: gif "alt =": scratchhead: "title =" #Scratch Head ">

Ich war wie wth könnte mit der date-Funktion falsch, so nach der Überprüfung der manuellen Bestimmung habe ich alles richtig hinein, ich meine ini-Datei überprüft:

Code: [ Download ] [ Select ]
;date.timezone = America/New_York


War auskommentiert...Ich un-bemerkte er, neu gestartet, feste...

Die vermasselt Teil habe ich eine Million anderer Zeitpunkt Implementierungen auf der Website, so wie kommen diese Fehler nicht, ES SEI DENN sie wurden in der Fehlerbehandlung?
Why no, no I'm not.
  • joebert
  • Weathered
  • Genius
  • Benutzeravatar
  • Registriert: Feb 10, 2004
  • Beiträge: 11886
  • Loc: Clearwater, FL
  • Status: Offline

Beitrag November 3rd, 2009, 9:41 am

Meine einzige Vermutung ist, dass die Fehlerbehandlung in einem sicheren Art Anwendungsbereich läuft / Kontext, in dem einige berechnet Ersatz für fehlende ini-Werte sind nicht verfügbar.

Ich weiß wirklich nicht, und ich einfach gelöscht Kopie der PHP-Quellcode ich in der Regel durch ein paar Tage sehen vor beim Aufräumen und Realisierung hatte ich es nicht in Monaten sah.
Why yes, yes I am.

Buchung Informationen

  • Beiträge in diesem Thema: 5 Beiträge
  • Mitglieder in diesem Forum: 0 Mitglieder und 346 Gäste
  • Du darfst keine neuen Themen in diesem Forum erstellen.
  • Du darfst keine Antworten zu Themen in diesem Forum erstellen.
  • Du darfst deine Beiträge in diesem Forum nicht ändern.
  • Du darfst deine Beiträge in diesem Forum nicht löschen.
  • Du darfst keine Dateianhänge in diesem Forum erstellen.
 
 

© Unmelted Enterprises 1998-2009. Angetrieben durch phpBB © 2001-2009 phpBB Group.