SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=210&group=37
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.de
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


Erzeugen von eigenen Logfiles


Mit den Servervariablen lassen sich auf einfache Weise auch eigene Logfiles erzeugen. Üblicherweise sind die meisten Webserver so eingestellt, dass solche Logfiles automatisch angelegt werden. Sie als Entwickler haben jedoch nicht bei jedem Provider einen direkten Zugriff auf Logfiles. In diesem Fall kann Ihnen PHP beim Anlegen Ihrer eigenen Logfiles behilflich sein. Sie werden natürlich nicht sämtliche Servervariablen in Ihr Logfile aufnehmen müssen. Es empfiehlt sich, folgende Servervariablen zu erfassen:

Zusätzlich sollten Sie noch mithilfe der date()- und time()-Funktion das Datum und die Uhrzeit des Aufrufs erfassen. Übertragen Sie folgendes Skript in die Datei logfile.php:

<?php

$logdatei=fopen("logs/logfile.txt","a");
fputs($logdatei,
    date("d.m.Y, H:i:s",time()) .
    ", " . $_SERVER['REMOTE_ADDR'] .
    ", " . $_SERVER['REQUEST_METHOD'] .
    ", " . $_SERVER['PHP_SELF'] .
    ", " . $_SERVER['HTTP_USER_AGENT'] .
    ", " . $_SERVER['HTTP_REFERER'] ."\n"
    );
fclose($logdatei);

?>

Die Serverdaten werden in die Datei logfile.txt im Verzeichnis logs gespeichert. Sie müssen lediglich dafür sorgen, dass das Verzeichnis existiert und die entsprechenden Zugriffsrechte gesetzt wurden, um eine Datei zu erzeugen.

Mit der Funktion fopen() wird die Datei geöffnet und in den entsprechenden Modus versetzt (a = append, hinzufügen). In dieser geöffneten Datei wird nun mit fputs() eine Zeichenfolge geschrieben, die das aktuelle Datum und die aktuelle Uhrzeit enthält, gefolgt von der IP-Adresse des Clientrechners, anschließend die Art der Anfrage, den Namen des aufgerufenen Skripts, Informationen über den Browser und die Seite, welche der Browser vorher besucht hat. Vergessen Sie nicht, noch einen Zeilenvorschub hinzuzufügen \n, damit gewährleistet werden kann, dass jeder Aufruf in einer eigenen Zeile angelegt wird. Die Einträge der einzelnen Aufrufe werden jeweils durch ein Komma voneinander getrennt, sodass die Daten auch leicht in Programme wie Access oder Excel eingelesen werden können. Am Ende des Skripts wird noch dafür gesorgt, dass die Datei mit fclose() wieder geschlossen wird.

Hinweis: Nähere Informationen zu fopen(), fclose() etc. erhalten Sie im Abschnitt 4.7 »Dateisystem via PHP«.


Einsatz der logfile.php

Um für jede Seite Ihrer Website die logfile.php automatisch mit aufrufen zu lassen und somit einsetzen zu können, bietet es sich an, die Datei im Header einer jeden Seite mithilfe einer include()-Anweisung einzubinden.

Beispiel

<?php
include("logfile.php");
?>

Dies führt dazu, dass bei jedem Seitenaufruf eine neue Zeile in der Datei logfile.txt mit den entsprechenden Daten erzeugt wird.

Diese Daten können Sie nun nach Belieben mit anderer Software bearbeiten. Sie können auch wahlweise zusätzliche Servervariablen hinzufügen und damit die Aussagekraft Ihrer Logfiles erweitern.