ApacheLog per Script erstellen
Mit dieser Funktion lässt sich eine Logdatei erstellen, die das gleiche Format wie das "Common Log Format" des Apaches hat.Vor allem nützlich, wenn man keinen Zugriff auf die Apache-eigenen Logdateien hat.
<?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 );
}
}
?>