IP-Adresse mit PHP Errors

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
Albert Naumann [ Mi, 15 Februar 2006 09:23 ] [ ID #1189891 ]

Re: IP-Adresse mit PHP Errors

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.

--
Bodo Kaelberer [ Mi, 15 Februar 2006 11:23 ] [ ID #1189892 ]

Re: IP-Adresse mit PHP Errors

> 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?
Albert Naumann [ Mi, 15 Februar 2006 14:28 ] [ ID #1189893 ]

Re: IP-Adresse mit PHP Errors

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

--
Bodo Kaelberer [ Mi, 15 Februar 2006 17:14 ] [ ID #1189894 ]

Re: IP-Adresse mit PHP Errors

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.

--
Bodo Kaelberer [ Di, 21 Februar 2006 23:50 ] [ ID #1198113 ]

Re: IP-Adresse mit PHP Errors

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

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
Albert Naumann [ Fr, 10 März 2006 15:52 ] [ ID #1224056 ]

Re: IP-Adresse mit PHP Errors

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
>
> 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

--
Bodo Kaelberer [ Fr, 10 März 2006 17:18 ] [ ID #1224057 ]
PHP » de.comp.lang.php.installation » IP-Adresse mit PHP Errors

Vorheriges Thema: Re: SuSE 10: phpMyAdmin - Fehler: Die Erweiterung mysql kann nicht geladen werden
Nächstes Thema: Wer kennt sich aus? (Easyphp?)