IP-Adresse mit PHP Errors

IP-Adresse mit PHP Errors

am 15.02.2006 09:23:06 von Albert Naumann

Hallo,

möchte die IP-Adresse mit den PHP Errors
zusammen loggen.

Ist dies durch eine Einstellung in der php.ini möglich?

Oder was muss sonst gemacht werden?

Gruß
Albert

Re: IP-Adresse mit PHP Errors

am 15.02.2006 11:23:23 von Bodo Kaelberer

Hi

Albert Naumann am Wed, 15 Feb 2006 09:23:06 +0100:

> möchte die IP-Adresse mit den PHP Errors
> zusammen loggen.
>
> Ist dies durch eine Einstellung in der php.ini möglich?
>
> Oder was muss sonst gemacht werden?

Wie das in den offiziellen Logfiles möglich ist, weiss ich nicht.

Wenn Du es für ein bestimmtes Script haben willst, kannst Du den
error-handler "überschreiben" und dann jede beliebige Funktionalität
(z.B. Logfile mit IPs) selbst implementieren.

--

Re: IP-Adresse mit PHP Errors

am 15.02.2006 14:28:57 von Albert Naumann

> Wie das in den offiziellen Logfiles möglich ist, weiss ich nicht.

wäre mir die liebste Lösung

> Wenn Du es für ein bestimmtes Script haben willst, kannst Du den
> error-handler "überschreiben" und dann jede beliebige Funktionalität
> (z.B. Logfile mit IPs) selbst implementieren.

kannst du mir da vielleicht ein kleines Bsp. geben wie der PHP Code
aussehen könnte?

Re: IP-Adresse mit PHP Errors

am 15.02.2006 17:14:51 von Bodo Kaelberer

Hallo Albert

Albert Naumann am Wed, 15 Feb 2006 14:28:57 +0100:

> > Wie das in den offiziellen Logfiles möglich ist, weiss ich nicht.
>
> wäre mir die liebste Lösung

Andererseits bietet ein eigener Error-Handler die Möglichkeit, alles
mögliche mit den Fehlermeldungen anzustellen. Auch z.B. per Mail
zusenden lassen


> > Wenn Du es für ein bestimmtes Script haben willst, kannst Du den
> > error-handler "überschreiben" und dann jede beliebige Funktionalität
> > (z.B. Logfile mit IPs) selbst implementieren.
>
> kannst du mir da vielleicht ein kleines Bsp. geben wie der PHP Code
> aussehen könnte?


====
function myErrorHandler( $errNo, $errStr, $errFile,
$errLine, $errContext ) {

if ( $s_code2Text === null ) {
$s_code2Text = 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',
);
if ( defined( 'E_STRICT' ) ) { # erst ab PHP5
$s_code2Text[E_STRICT] = 'E_STRICT';
}
}

# Fehlercode in lesbaren Wert umsetzen

if ( isset( $s_code2Text[$errNo] ) ) {
$errNo = "$errNo (".$s_code2Text[$errNo].")";
}
else {
$errNo = "$errNo (?)";
}


$ip = $_SERVER['REMOTE_ADDR'];

....
Jetzt den Text zusammenstellen, den man protokollieren möchte
und dann ab in eine Datei, Mail etc.
...

}


# PHP mitteilen, welche Funktion das error-handling machen soll,
# nämlich obige.

set_error_handler( 'myErrorHandler' );

====

Wenn Du per Mail verschickst, dann solltes Du die Anzahl der pro
Scriptaufruf zu versendenden Mails begrenzen (Stichwort: statische
Variable). Sonst geht für jeden Fehler eine Mail an Dich raus (und
glaube mir, dass können bei manchen Fehler sehr, sehr viele sein).


Du kannst den Error-Handler auch für eigene Fehlermeldungen benutzen.
Für näheres siehe die Funktion trigger_error().


Bye

--

Re: IP-Adresse mit PHP Errors

am 21.02.2006 23:50:53 von Bodo Kaelberer

Bodo Kaelberer am Wed, 15 Feb 2006 17:14:51 +0100:

> ...
> set_error_handler( 'myErrorHandler' );
> ...

Was mir noch eingefallen ist: Den Error-Handler zu überschreiben kann
natürlich auch dazu führen, dass im Fehlerfall das Script weiterläuft,
wo es eigentlich abgebrochen werden würde.
Man sollte also in Erwägung ziehen, fallabhängig nicht nur den Fehler
zu protokollieren, sondern die Ausführung zu beenden.

--

Re: IP-Adresse mit PHP Errors

am 10.03.2006 15:52:47 von Albert Naumann

Hallo,

durch das setzten des Error Handlers mit
set_error_handler( 'myErrorHandler' );
erhalte ich Errors wie:

E_WARNING 2006-03-09 11:23:02 IP: 68.142.323.111 QUERY_STRING: page=20

wie kann ich wie im Standard Logfile die PHP Warning und die Line ausgeben?

[09-Mar-2006 11:48:59] PHP Warning: Cannot modify header information -
headers already sent in
/home/www/stable/ct.php on line 53

Re: IP-Adresse mit PHP Errors

am 10.03.2006 17:18:17 von Bodo Kaelberer

Hi Albert.

Albert Naumann am Fri, 10 Mar 2006 15:52:47 +0100:

> durch das setzten des Error Handlers mit
> set_error_handler( 'myErrorHandler' );
> erhalte ich Errors wie:
>
> E_WARNING 2006-03-09 11:23:02 IP: 68.142.323.111 QUERY_STRING: page=20
>
> wie kann ich wie im Standard Logfile die PHP Warning und die Line ausgeben?

Die Zeile bekommt der Error-Handler auch als Parameter. Heisst in
meinem Beispielcode $errLine.

Eine ausgabe ins Logfiles geht vermutlich mit: error_log()

PHP hat ein Set von Funktionen zur Fehlerbehandlung. Eine Übersicht
findest Du hier:

http://www.php.net/manual/en/ref.errorfunc.php


Grüzze

--