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$logMsgFILE_APPEND );
      }
      else
      {
         
$fileHandle fopen $logFile'a' );
         
fputs $fileHandle$logMsg );
         
fclose $fileHandle );
      }
   }
?>
deutsch english
Übersicht
Downloads
free game
SerpTrain
Physik-Studium
Schnipsel
Mail-Test
Gästebuch
Impressum
Valid HTML 4.01!
Valid CSS!
Get MySQL
Get PHP
Get Firefox
Get Thunderbird
© Michael "Serpedon" Walz