<?php
error_reporting(E_ALL);
// Getting the information
$ipaddress = $_SERVER['REMOTE_ADDR'];
$page = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}";
if(!empty($_SERVER['QUERY_STRING']) $page .= $_SERVER['QUERY_STRING'];
$referrer = $_SERVER['HTTP_REFERER'];
$datetime = mktime();
$useragent = $_SERVER['HTTP_USER_AGENT'];
$remotehost = getHostByAddr($ipaddress);
// Create log line
$logline = $ipaddress . '|' . $referrer . '|' . $datetime . '|' . $useragent . '|' . $remotehost . '|' . $page . "\n";
echo $logline;
// Write to log file:
//$logfile = 'logfile.txt';
$logfile = '/home/www/agro-dive.onlinewebshop.net/logfile.txt';
// Open the log file in "Append" mode
if (!$handle = fopen($logfile, 'a+')) {
die("Failed to open log file");
}
// Write $logline to our logfile.
if (fwrite($handle, $logline) == FALSE) {
die("Failed to write to log file");
}
fclose($handle);
?>
如果我尝试打开这个php它会给我一个服务器错误
HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.
我也按照here步骤测试了它,但它没有产生任何日志消息
答案 0 :(得分:1)
“服务器错误”表示“您必须查看服务器error_log以查找特定错误消息”。
调试代表读取错误消息,而不是观察代码或猜测。
答案 1 :(得分:0)
我无法回答有关调试和记录的问题,但是它的价值是什么。您的错误在第6行。 通过以下方式替换它:
if(!empty($_SERVER['QUERY_STRING']))
$page .= $_SERVER['QUERY_STRING'];
答案 2 :(得分:0)
BobDcoder在这里! 2019更新
虽然这被标记为已解决/已接受/无论如何,但根据文档,答案似乎是错误的解决方法。许多新手和经验丰富的编码人员都认为这是三元if语句。 (不过,您拼写三元,大声笑。)但原始海报(op)的状态有所不同!
虽然我可能是错的,但我认为问题是:
$page = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}";
$page .= iif(!empty($_SERVER['QUERY_STRING']), "?{$_SERVER['QUERY_STRING']}", "");
(其中 $ page 是第二行代码的追加。)
许多新手和经验丰富的编码人员都认为这是三元if语句。 (不过您拼写三元,大声笑。)
在原始文档中,OP声明这是一个函数调用。 https://www.go4expert.com/articles/track-visitors-using-php-t195/
在文档中引用OP。 “注意:在上面的示例中,我使用了一个名为iif()的函数。您可以在http://www.phpit.net/code/iif-function处获得此函数。”
可悲的是,到iif()函数的链接已失效,因此也许有人拥有该函数的旧代码,可以将其发布到此处或其他存储库中。
尽管上面的其他更正可能允许代码测试是非,并破坏并处理其余代码,但我认为OP可能会将其“ iif()用作其他功能(错误的编程选择)函数调用)。
答案 3 :(得分:-1)
// Write to log file:
//$logfile = 'logfile.txt';
$logfile = 'log.log';
其中log.log是您的日志文件