<?php
/*
Mit dem folgenden Befehl kann dynamisch festgelegt werden,
welcher Status Code in der Log gespeichert werden soll:
define ( 'HTTP_STATUS_CODE', 404 );
*/
function CreateApacheLog ( )
{
$logDirectory = "{$_SERVER['DOCUMENT_ROOT']}/logs";
$logFile = "$logDirectory/apacheLog." . date ( 'Y.m.d' ) . '.txt';
$logMsg = gethostbyaddr ( $_SERVER['REMOTE_ADDR'] ) /* DNS-Name */
. ' - ' /* Nichts sinnvolles (s. rfc931) */
. ( empty ( $_SERVER['PHP_AUTH_USER'] ) ? '-'
: $_SERVER['PHP_AUTH_USER'] ) /* Den Username */
. strftime ( ' [%d/%b/%Y:%H:%M:%S +0100]' ) /* Datum und Uhrzeit */
. " \"{$_SERVER['REQUEST_METHOD']} {$_SERVER['REQUEST_URI']} "
. "{$_SERVER['SERVER_PROTOCOL']}\" " /* Request-String */
. ( defined ('HTTP_STATUS_CODE') ? HTTP_STATUS_CODE : '200' )
/* Status Code; Leider nicht über PHP auslesbar */
. ' 1 "' /* Größe der ausgegebenen Datei; auch nicht über PHP auslesbar */
. ( empty ( $_SERVER['HTTP_REFERER'] ) ? '-'
: $_SERVER['HTTP_REFERER'] ) /* Referer */
. "\" \"{$_SERVER['HTTP_USER_AGENT']}\"" /* Useragent des Browsers '*/
. "\r\n"; /* neue Zeile */
if ( function_exists ( 'file_put_contents' ) )
{
/* Funktion ist erst ab PHP 5 verfügbar */
file_put_contents ( $logFile, $logMsg, FILE_APPEND );
}
else
{
$fileHandle = fopen ( $logFile, 'a' );
fputs ( $fileHandle, $logMsg );
fclose ( $fileHandle );
}
}
?>