用PHP生成自己的LOG文件
2024年02月27日
如果你的服务器不容许你读他的LOG文件,那你只好停下来分析你的访问者?做你自己的LOG文件吧!你仅需做的事情是用PHP计算实际的点击次数,没有错误,没有象'304 Not Modified'和'Internal Server Error'一样的错误。你的代码将生成自己的LOG文件。
<?php
/*用户定义变量*/
$logfile="clf.log";/*LOG文件写到那里*/
$timezone="+0100";/*Timezone correction*/
$lookup_size=true;/*设置文件的权限*/
$document_root="/usr/local/apache/share/htdocs";
/*他可能或不可能对相同的客户端记数
*一定要对$document_root这个变量进行设置才可以工作
*/
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$size\n";
write_to_log($log);
?>