The next problem I ran into was that I would get inacurate (or no) filesize specifications in the log
because it’s not possible to find out how much content that gets generated from your PHP script. I
ended up recording the original size of the PHP3 file, as this would at least give me a hint about
how much data is actually sent each day/week/month (it’s an option – use it or don’t).
because it’s not possible to find out how much content that gets generated from your PHP script. I
ended up recording the original size of the PHP3 file, as this would at least give me a hint about
how much data is actually sent each day/week/month (it’s an option – use it or don’t).
Well, not much more to say except “Here’s the code, use it!” Just include this file the first
thing you do in all your PHP scripts.
thing you do in all your PHP scripts.
<?php
/*
* Common Logfile Format script.
*
* Author: Mattias Nilsson <mattias_at_coolt.nu>
*
*/
/* User definable variables */
$logfile = "clf.log"; /* Filename of log to write to */
$timezone = "+0100"; /* Timezone correction */
$lookup_size = true; /* Set to true to enable filesize lookup */
$document_root = "/usr/local/apache/share/htdocs";
/* A note about the lookup_size directive:
* This will make this script lookup the size of the original file on disk,
* which may or may not be the same amount of data sent to the client.
* It does give you a hint though..
* Oh, you have to set $document_root aswell if this should work..
*/
function write_to_log($str) {
if($fd = @fopen($GLOBALS[ "logfile"], "a")) {
fputs($fd, $str);
fclose($fd);
}
}
function
get_var($name,$default) {
if($var = getenv($name)) {
return $var;
} else {
return $default;
}
}
if(
$remote_host = get_var( "REMOTE_HOST", false)) {
$remote_host = get_var( "REMOTE_ADDR", "-");
}
$remote_user = get_var( "REMOTE_USER", "-");
$remote_ident = get_var( "REMOTE_IDENT", "-");
$server_port = get_var( "SERVER_PORT", 80);
if($server_port!=80) {
$server_port = ":" . $server_port;
} else {
$server_port = "";
}
$server_name = get_var( "SERVER_NAME", "-");
$request_method = get_var( "REQUEST_METHOD", "GET");
$request_uri = get_var( "REQUEST_URI", "");
$user_agent = get_var( "HTTP_USER_AGENT", "");
if($lookup_size == true && $document_root) {
$filename = ereg_replace( "?.*", "", $request_uri);
$filename = "$document_root$filename";
if(!$size = filesize($filename)) {
$size = 0;
}
} else {
$size = 0;
}
$date = gmdate( "d/M/Y:H:i:s");
$log = "$remote_host $remote_ident $remote_user [$date $timezone] "".
"$request_method http://$server_name$server_port$request_uri" 200 $sizen";
write_to_log($log);
?>
–Mattias