帮助调试php页面

时间:2011-03-30 06:46:07

标签: php logging visitor-statistic

<?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步骤测试了它,但它没有产生任何日志消息

4 个答案:

答案 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是您的日志文件